Моделирование базы данных, структуры и отношения - PullRequest
1 голос
/ 30 марта 2020

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

Представленный на рисунке ниже является частью базы данных, которую я в данный момент работаю над. Я работаю над формами нормализации, поэтому в нем уже есть несколько таблиц. Однако в Таблице отгрузки (выделено синим цветом) в этом случае в родительской таблице Подробности отгрузки (выделено красным) я не знаю, должен ли я включить дополнительный столбец для таблицы отгрузки, чтобы он мог идентифицировать или подключиться к Отгрузке Детальная таблица.

Я уже включил внешний ключ для Детали отгрузки, чтобы определить, к какому отгрузке он относится. Я просто не знаю, должен ли я добавить еще один столбец идентификатора для деталей в таблице Отгрузка. Чтобы быть более точным c, я должен добавить столбец "Идентификатор отгрузки" для таблицы Отгрузки? Я волнуюсь, это может привести к увольнениям, если я включу это.

enter image description here

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Если у каждого shipment есть только один shipment detail

shipment {SHIPMENT_ID, ...}
      PK {SHIPMENT_ID}


shipment_detail {SHIPMENT_ID, ...}
             PK {SHIPMENT_ID}

             FK {SHIPMENT_ID} REFERENCES
       shipment {SHIPMENT_ID}

Если у каждого shipment может быть более одного shipment detail

shipment {SHIPMENT_ID, ...}
      PK {SHIPMENT_ID}


shipment_detail {SHIPMENT_ID, SHP_DET_NO, ... }
             PK {SHIPMENT_ID, SHP_DET_NO}

             FK {SHIPMENT_ID} REFERENCES
       shipment {SHIPMENT_ID}

Примечания:

All attributes (columns) NOT NULL

PK = Primary Key
AK = Alternate Key (Unique)
FK = Foreign Key
1 голос
/ 30 марта 2020

Это зависит. Если вы хотите, чтобы в Shipment было много ShipmentDetails, то нет, потому что вы собираетесь повторять ShipmentDetailId в таблице Shipment для каждого имеющегося у него ребенка, что нарушает 1FN.

Simple Select to see the potential results

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

Я видел таблицы, которые стали слишком большими скажем, в столбцах ammount, но я никогда не видел повышения производительности для разделения столбцов в разных таблицах.

Надеюсь, это поможет!

...