Форум LibreOffice по-русски

Автор Тема: Помогите разобраться с базой  (Прочитано 654 раз)

mess-hw

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Помогите разобраться с базой
« : 30 Января 2015, 04:12:01 »
Есть база, в которой необходимо однозначно связать несколько таблиц
например
материнская плата, процессор, корпус, блок питания в могут находиться только в 1 системном блоке, а 1 системный блок может содержать это все только в 1 экземпляре, в отличие от, например жесткого диска или оперативной памяти, так?
для этого должна быть связь 1 к 1, правильно?
а как связать эти таблицы, когда для связи 1 к 1 требуется связывать по первичному ключу, а таблица может иметь только 1 ключевое поле?

Katenokkas

  • Администратор
  • Новичок
  • *****
  • Сообщений: 47
    • Просмотр профиля
Re: Помогите разобраться с базой
« Ответ #1 : 30 Января 2015, 14:29:55 »
Здравствуйте, mess-hw!
Знаете, во всех курсах по проектированию и созданию баз данных, которые мне доводилось проходить, говорилось, что таблицы, имеющие связь "один-к-одному" являются избыточными и от них следует избавляться путём объединения. 
У вас тут может быть два варианта: первый - комплектующие у вас (не важно, по разным они разбросаны таблицам или нет) уникальные - грубо говоря, у вас стоит на каждом инвентарный номер и вы так и вносите их в базу. Тогда действительно связь будет 1:1 и есть смысл просто объединить всю информацию в одну таблицу. Тогда первичный ключ будет один - номер системника.
Второй вариант - вы учитываете комплектующие по типу. Скажем, на блоки питания одного производителя и одной мощности создаёте единую запись (и, может быть, забиваете в неё их количество). Тогда в общем случае связь будет "один-ко-многим" и объединять таблицы не нужно. Первичным ключом для комплектующих опять же будет какой-то абстрактный номер (это самый удобный вариант). И вы просто будете подставлять его в нужное поле в таблице с системниками. Первичные ключи в данном случае у таблиц могут не совпадать.
Надеюсь, ситуацию обрисовала понятно  :)

 

© 2012-2017 LibreOffice по-русски. Powered by SMF®

Яндекс.Метрика