MySQL & mSQL



Проектирование физической базы данных - часть 3


/p>

В нашей модели нет связей типа «один-к-одному». Если бы они были, то нужно было бы взять одну из таблиц и ввести в нее колонку внешнего ключа, соответствующую первичному ключу другой таблицы. Теоретически не важно, которую из таблиц вы выберете, но практические соображения могут определять, какую из колонок лучше сделать внешним ключом.

Теперь у нас есть полная физическая схема базы данных. Осталось перевести эту схему на SQL. Для каждой таблицы в схеме вы пишете одну команду CREATE TABLE. Обычно для поддержки уникальности создается уникальный индекс по первичным ключам.

В некотором смысле мы сейчас забегаем вперед. Вы, возможно, не знакомы с SQL, а в задачи данной главы не входит знакомство с версиями SQL, поддерживаемыми MySQL и mSQL. Все же, вот два простых сценария для создания базы данных CD. Первый сценарий, пример 2-1, составлен для MySQL, пример 2-2 — для mSQL.

Пример 2-1. Сценарий создания базы данных CD в MySQL

CREATE TABLE CD (CDID INT NOT NULL,

RECORD_LABEL_I INT, CD_TITLE TEXT, PRIMARY KEY (CD_ID))

CREATE TABLE Artist (ARTIST_ID INT NOT NULL, ARTIST_NAMETEXT,

PRIMARY KEY (ARTIST_ID)) CREATE TABLE Song (SONG_ID INT NOT NULL, CD_ID INT, SONG_NAME TEXT, PRIMARY KEY (SONG_ID))

CREATE TABLE RecorLabel(RECORD LABEL_ID INT NOT NULL, RECORD_LABEL_NAME TEXT, PRIMARY KEY(RECORD_LABEL_ID))

Пример 2-2. Сценарий создания базы данных CD в mSQL

CREATE TABLE CD (CD_ID INT NOT NULL,

RECORD_LABEL_IDINT, CD_TITLE TEXT(50))

CREATE UNIQUE INDEX CD_IDX ON 0(DCD.ID)

CREATE TABLE ArtistARTIST_ID INT NO NULL,

ARTIST_NAMETEXT(50))

CREATE UNIQUE INDEX Artist_IDX ON Artist (ARTIST_ID)

CREATE TABLE Song (SONG_ID INT NOT NULL, CD_ID INT,

SONG_NAME TEXT(50))

CREATE UNIQUE INDEX Song_IDX ON Song (SONG_ID)

CREATE TABLE RecordLabel (RECORD_LABEL_IDINT NOT NULL,

RECORD_LABEL_NAMEEXT(50))

CREATE UNIQUE INDEX RecordLabel_IDX

ON RecordLabel(RECORD_LABEL_ID)

Модели данных разрабатываются так, чтобы не зависеть от базы данных. Поэтому вы можете взять технику и модель данных, созданную в этой главе, и применить ее не только к MySQL и mSQL, но и к Oracle, Sybase, Ingres и любой другой РСУБД. В следующих главах мы подробно обсудим, как соединить ваши новые знания о проектировании баз данных с MySQL и mSQL.




Содержание  Назад