2010-10-12 5 views
1

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

Например, продукт A, который находится под товарной группой XYZ, будет работать на L1 и L2.
Данные образца
Период: Line_Number | Product_Subgp | Line_Capacity | Prority
201009 | L1 | XYZ | 2000 | 1
201009 | L1 | ABC | 2000 | 2
201009 | L2 | XYZ | 2000 | 2
201009 | L2 | ZZZ | 2000 | 1


Структура таблицы для строки заголовка: LinHdr

Line_Hdr_ID | Int (AutoIncrement)
Line_Number | VarChar (10) [Основной ключ]
Период | VarChar (6) [Основной ключ]
Емкость | Числовые (16)
Special_Capacity | Числовые (16)
Line_Description | VarChar (20)


Структура таблицы для строки заголовка: LinDtl

Line_Dtl_ID | Int (AutoIncrement)
Line_Hdr_ID | Int [Основной ключ]
Product_Group | VarChar (10) [Основной ключ]
Prority | Числовой (2)


Вопросы:

  1. Таблица LinHdr: line_number + Период является первичным ключом. Поскольку эти 2 поля будут действовать как уникальность и как ключ поиска данных. Правильно ли я устанавливаю как первичный ключ?

  2. Таблица LinHdr: Необходимо включить Lin_Hdr_ID в качестве первичного ключа? (LinHID, который является автоинкрементным по SQL, будет невидимым для пользователей).

    • Цель LinHID это сделать ссылку на LinDtl, так что нет необходимости включать в себя избыточные данные (т.е. период + line_number) в LinDtl, используя Lin_Hdr_ID связать betw 2 таблицы.
  3. Таблица LinDtl: Line_Hdr_ID + Product_Group будет установлена ​​как первичный ключ, чтобы обеспечить уникальность. Правильно ли это: Line_Dtl_ID? Нужно ли это поле? Если Line_Hdr_ID + Product_Group уже предоставляет уникальность, может исключить Line_Dtl_ID?

  4. Или, лучше объединить 2 таблицы выше в 1 таблицы, которые не создали реляционную базу данных?

Надеюсь, у нас есть совет от экспертизы.

Заранее спасибо.

+1

Совет по дизайну 1. Не сокращайте таблицы или столбцы. Используйте целые слова. Полные слова. В деталях. Пожалуйста, используйте очень длинные, очень четкие, очень точные, очень полные имена. Мы даже не можем догадаться, о чем вы говорите. Пожалуйста, ** уточните ** вопрос, чтобы включить подробную информацию. Если это домашнее задание, также, пожалуйста, отметьте его как домашнюю работу. –

ответ

0

1.1. Линейный идентификатор Hdr установлен в autinc - сделайте это PK. Вы можете искать по полям без PK. Если они уникальны вместе, тогда сделайте индекс на них - нужно сделать их PK и затем использовать его как FK - длинный ключ! плюс мне лично не нравится назначать даты в ПК

  1. См. # 1 выше - и, вы ответили на свой вопрос!

  2. Если вы хотите, чтобы concit/составная PK в InDtl, то сделайте это LinHdr_id + Lin Dtl Id - это «правильный» способ определения отношения.

  3. Не комбинируйте таблицы, это нарушит 3-ю нормальные формы.

  4. CONider читает книгу: Моделирование отношений сущностей Ричарда Баркера.

1

Я согласен с тем, что сказал Джо (он печатал его, и он избил меня).

Я бы добавил, что , если столбец «Описание линии» является чем-то уникальным для самой линии, а не каждой комбинацией строк/периодов, тогда вы хотели бы иметь отдельную «Линию», таблицу с столбцами LineNum и LineDescription. Таким образом, вам не нужно вставлять это значение описания каждый месяц, когда вы вводите информацию нового периода. Если описание меняется каждый месяц (или это возможно для его изменения только для отдельного периода), то оставьте его таким, как он есть.

+0

Спасибо, ваше предложение хорошее. Но в этом случае отдельная таблица «Линия» с LineNum и LineDescriptions имеет только 2 поля, так как требуется больше усилий для создания другой программы входа для пользователей для поддержки LineDescriptions. :П –

Смежные вопросы