Хранение нескольких идентификаторов сотрудников в одном столбце данных - PullRequest
1 голос
/ 16 апреля 2009

Веб-приложение написано на классическом ASP с бэкэндом MSSQL. На этой конкретной странице администратор может выбрать 1 или любого / всех сотрудников, которым будет назначен проект. Я пытаюсь найти простой способ хранения идентификаторов сотрудников назначенных ему людей в одном столбце.

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

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

Извините за вопрос, но спасибо!

Ответы [ 2 ]

11 голосов
/ 16 апреля 2009

Не храните несколько идентификаторов в одном столбце! Создайте другую таблицу с первичным ключом существующей таблицы и одним идентификатором, который вы хотите сохранить. Затем вы можете вставить несколько строк в эту новую таблицу, создав отношение 1: m (один ко многим). Например, давайте посмотрим на таблицу заказов:

order:
    order_id
    order_date

и у меня есть таблица продуктов ...

product:
    product_id
    product_name

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

order_item:
    order_item_id
    order_id
    product_id
    quantity
    unit_price

Затем вы можете выполнить объединение, чтобы получить все продукты для определенного заказа ...

select
    product.*

from orders 

inner join order_item on order_item.order_id = order.order_id
inner join product on product.product_id = order_item.product_id

where orders.order_id = 5

Вот пример order_id из 5, и он получит все продукты в этом порядке.

3 голосов
/ 16 апреля 2009

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

...