Хранение списка треков альбома в базе данных - PullRequest
1 голос
/ 19 июля 2011

У меня есть проект, который требует от меня хранения информации о некоторых музыкальных альбомах. Я имею в виду простую таблицу альбомов со следующими полями:

|   id   |  name  | artist |description|  year  |

Но мне интересно, как лучше всего хранить список треков. У меня может быть другое поле в таблице альбомов, и данные треклиста (имя трека, время исполнения трека) могут быть сохранены как объект JSON или что-то подобное, а затем вытащить его и проанализировать в моем приложении, или я могу получить другое таблица называется tracklists со следующими полями:

|   id   |  name  | album  | runtime |

и извлеките его на основе поля album.

Как бы вы поступили так?

Ответы [ 4 ]

4 голосов
/ 19 июля 2011

Другой стол.

вызовите поле альбома album_id и сделайте его внешним ключом обратно в таблицу альбомов.

По сути, вы не хотите хранить все в одной таблице.

Это усложнит управление данными, связанными с треком. Потому что это не атомарная обработка данных. Вам придется связываться со всем полем, которое будет содержать другие данные, не относящиеся к тому, что вы хотите редактировать, что может привести к повреждению данных.

Еще одна причина состоит в том, чтобы разделить концепции и хорошие абстракции, чтобы они были понятны вам в будущем и другим программистам. например Куда мне пойти, чтобы попасть на треки? Ну, я иду к таблице треков. Куда мне обращаться, чтобы манипулировать альбомами? Ну, я иду к таблице альбомов. и т.д ..

0 голосов
/ 19 июля 2011

будет выглядеть примерно так (не проверено)?

CREATE TABLE album 
(         
    album_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,         
    description VARCHAR(400),       
    artist VARCHAR(400),
    description VARCHAR(400),
    year_released NUMBER(4),
);

CREATE TABLE track 
(         
    track_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    album_id INT,         
    description VARCHAR(100),           
    order_no NUMBER(3),
    runtime NUMBER(6),
    INDEX albumfk (album_id),
                    FOREIGN KEY (album_id) REFERENCES album(album_id)

);
0 голосов
/ 19 июля 2011

Вы обязательно должны пойти со вторым вариантом.Подумайте, как вы будете искать треки с помощью объекта json.Это будет намного проще со вторым столом!

0 голосов
/ 19 июля 2011

Я бы сломал это, как вы сказали, и имел бы отношение один-один к идентификатору альбома. Я думаю, намного чище ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...