Как представить отношения один-к-одному в дизайне БД? - PullRequest
1 голос
/ 28 октября 2010

Скажем, у меня есть два класса Laptop и Lcd.Давайте теперь предположим, что каждый ноутбук может иметь только один Lcd, а Lcd может быть установлен только на один Laptop в любое время.Предположим также, что Lcd можно удалить из одного Laptop и установить в другом.Так что это взаимно-однозначная связь от Laptop до Lcd.

Теперь вопрос в том, как спроектировать схему БД для этого отношения один-к-одному?

Большое спасибо,

Брайан

Ответы [ 3 ]

4 голосов
/ 28 октября 2010

Самый простой способ смоделировать это - поместить внешний ключ в ЖК-таблицу, которая связана с таблицей ноутбука. Сделайте этот столбец необнуляемым и уникальным.

Laptop
-------------
LaptopId (PK)
...

LCD
-------------
LCDId (PK)
LaptopId (FK, Non-null, Unique constraint)

(Стоит также отметить, что этот же подход будет работать наоборот: таблица Laptop имеет уникальный для внешнего значения уникальный ключ к таблице LCD).

1 голос
/ 28 октября 2010

Этого можно достичь, если иметь внешний ключ в таблице Laptop, указывающий на первичный ключ таблицы Lcd.Первичный ключ, как правило, представляет собой автоматически увеличиваемое целое число и гарантирует, что каждая строка в таблице уникальна.

0 голосов
/ 28 октября 2010

У вас просто есть столбец в таблицах laptop, который ссылается на первичный ключ lcd без таблицы соединения.

Вы не указали, какое программное обеспечение базы данных вы используете, но в MySQL это будет выглядеть примерно так:

CREATE TABLE laptops (
 id INTEGER NOT NULL AUTO_INCREMENT,
 lcd_id INTEGER,
 PRIMARY KEY (id)
)

CREATE TABLE lcds (
 id INTEGER NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (id)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...