Как грамотно составить БД

По-моему, задача тривиальная, но я чего-то торможу...
Есть таблица tab_Organizations. В ней должны содержаться сотрудники,
поставляемые, требуемые товары и ещё куча разных данных типа
местоположения. Хранить всё в одной базе неэкономно и поэтому я решил
делать что-то типа указателей. Т.е. есть товар "карандаш", он может
быть товаром для кучи разных фирм и хранить для каждой его имя не
очень экономно, поэтому я сделал другую таблицу tab_Goods в которую
вывел все товары с индивидуальным id.
Тоже самое с сотрудниками - для них есть отдельная таблица с кучей
инфы.
Теперь надо включить id товаров и сотрудников в таблицу Organization.
Первое, что мне пришло в голову это добавить поле, к примеру, workers
и туда через запятую запихнуть номера людей. Однако, если в таблице
людей будет больше чем тысяча, то указатель вместе с запятой будет
занимать уже на один байт больше, чем ему положено (в идеале четыре
байта, а на деле получиться 1001,1015,2045 и т.п. - пять байт на
одного сотрудника или товар), следовательно поле MEMO, которое должен
иметь соот-щий столбец будет бухнуть прямо на глазах.
Вопросы:
1. На правильном ли я пути - нет ли каких-то стандартных способов
составлять списки?
2. Если включить указатели бинарно (т.е. чтобы и единица и 100 000
занимали лишь четыре байта) можно ли будет заставить sql искать четыре
байта с шагом в четыре байта (т.е. чтобы он не обращал внимание на
возможные совпадения на стыках байт - запятых же уже не будет)?
P.S.
Если это имеет значение: прогу пишу на VB.Net Express 2005, MS SQL.
P.S.
Прога будет работать на городской справочной неизвестное количество
времени и база расти несомненно будет, поэтому если уж не количество
сотрудников, то количество товаров точно будет немаленьким.
Номер выпуска : 5153
Возраст листа : 865 (дней)
Количество подписчиков : 549
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/510001
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
Здравствуйте, Neco,
Согласен - тривиальная.
Сразу уточним: В одной ТАБЛИЦЕ или в одной БАЗЕ? Судя по тому, что ты
сказал у тебя база состоит из одной таблицы, в которую все впихнуто.
Не надо. Это еще больший геморой.
Обычно делают связанные поля:
1. Таблица Товар - Номенклатуру товара содержит:
КОД товара - число
Название - строка
...прочие поля...
2. Таблица Фирма - содержит описание фирм:
КОД - число
...прочие поля... - Название, Адрес, телефон, и т.д.
3. Таблица товары фирмы
КОД ФИРМЫ
КОД ТОВАРА
Цена
...прочие поля...
Это структура БД. А вот формировать списки будешь в интерфейсе
пользователя.
Например: нужно добавить к фирме товар.
- Работаем с таблицей 3
- КОД фирмы выбираем из списка по таблице 2.
- КОД товара выбираем из списка по таблице 1.
Все!!