2014-01-13 2 views
0

Мне нужно создать систему, в которой пользователи могут добавлять кошек или собак, но я не уверен, как создавать таблицы для ее обработки.sql - таблицы наилучшей практики проектирования

Прежде всего:

  1. Пользователей могут добавлять собака и кошка
  2. Собаки и кошки имеют некоторые разные колонки требуются
  3. Каждые из них имеют расы (как человеческая раса, я не знать, если это так)

Например, для собак Мне нужно 2 определенных поля, для кошек мне нужны другие 2 конкретных поля, а затем у меня есть 5/6 общих полей.

Какая практика? Две разных таблиц или только один один с колонной называются type где:

типа = 1 является собака
типа = 2 является кошкой
и установить NULL конкретные поля, которые мне не нужны?

Такая же проблема для гонки собаки и кошачьей расы ... лучше всего один стол, в котором хранятся все они и разделяют их колонкой type?
Или две разные таблицы - правильный путь?

+1

Использование одной таблицы со всеми столбцами в порядке, если не так много пустых/опустошенных столбцов. Лично я предпочел бы иметь один стол для домашних животных с разделяемыми столбцами с двумя другими таблицами для Cats/Dogs (PK/FK = PetID, связанный с таблицей Pet). В любом случае, независимо от того, что вы выберете, попробуйте сохранить его в соответствии с остальной частью вашего приложения. – valverij

ответ

0

Я бы сказал: начало простого. Одна таблица для животных с столбцом типа (это может быть явный varchar, такой как «DOG» и «CAT»), и одна таблица для рас, а также столбец типа. Будет проще подключить ORM поверх этого и проще запросить, если вам нужно запустить некоторые статистические данные.

только возможные проблемы с этим являются: - все больше и больше столбцов, которые будут исключительно для одного животного, что приводит к некоторым тяжелым рефакторингу - возможное несоответствие между типом столбцами Pet и его расой если столовые приложениями с данными

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