Структура базы данных по категориям, одна основная, а затем вторичная (без подкатегорий) - PullRequest
0 голосов
/ 27 марта 2020

Я должен зарегистрировать номер 5-ди git для таблицы «Клиенты». Этот номер фактически соответствует номеру списка категорий извне (не в моей системе). Нет необходимости регистрировать больше информации (например, названия категории), чем номер, хотя это возможное решение, но это потребует больше работы. У меня будет одна основная категория, а затем дополнительные категории (до 2 или 3). Все эти категории находятся на одном уровне, одна не является категорией другой (без подкатегорий). Каков наилучший способ добиться этого?

Я подумал: Вариант 1 - иметь столбец для «основного номера», затем другой для «номера дополнительного-1», другой для «номера дополнительного-2» и еще один для «числа-вторичного числа 3», причем эти столбцы «вторичных чисел» необязательно заполнять.

Вариант 2 - есть столбец для «основного номера», а затем еще один для вторичных чисел, где ввод может иметь более одного вторичного числа, разделенного запятой (пример: «11111, 22222, 33333»).

Вариант 3 - иметь таблицу для этих чисел, например «Категории», а затем другую таблицу для множества отношения «многие ко» с таблицей «Клиенты». Возможно, тогда есть столбец в таблице «Категории», в котором будет указано, является ли это «основной категорией» или нет.

Другие варианты?

Одной из целей было бы составить список клиентов по Категории.

Мой низкий опыт работы с базами данных не помогает мне понять, какой вариант является лучшим или даже правильным (поскольку некоторые параметры могут вообще не рекомендоваться). Поэтому я надеялся, что кто-то с большим опытом сможет меня привести. Спасибо за помощь.

1 Ответ

0 голосов
/ 28 марта 2020

Только «Вариант 3» является правильным дизайнерским решением. Как вы написали " не требуется для регистрации дополнительной информации ", таблица external_categories сейчас не требуется, но может быть добавлена ​​позже.

clients                       client_ext_categories
-------                       --------  
id_client (PK)  --- 1:M ---<  id_client    (PK)
name                          category_num (PK) 
...
...