2015-06-23 2 views
-1

Я хочу создать систему базы данных (я использую SQLite) и в таблице, где храню историю, храню некоторые значения сотрудника (имя, фамилия, идентификатор и т. Д.) ..) Одно из полей - это некоторые рабочие позиции, которые в настоящее время составляют 3, но в будущем может увеличиться до 4 или 5 ... Что более умно делать?Как сохранить элемент с большим количеством полей

1) Иметь таблицу со всеми полями (среди них: wp1, wp2, wp3), а затем добавить колонку для WP3 или

2) Храните все эти рабочие позиции в таблице diferrent, где я будут иметь 2 поля id и wp и хранить различный wp для нескольких записей?

+0

Если только вы дать более конкретные сведения о ваших данных и ограничений, что является «умным», чтобы сделать, это просто вопрос мнения. Укажите данные примера и DDL. – Air

+0

Первое правило [нормализации базы данных] (https://en.wikipedia.org/wiki/Database_normalization) заключается в удалении повторяющихся групп. Второй вариант более гибкий, поскольку вы удаляете повторяющуюся группу рабочих позиций. –

+0

Для 1), очень уродливо писать запросы. Например, «Кто работает в X?»: SELECT name FROM emp WHERE 'X' IN (wp1, wp2, wp3). И вы должны редактировать эти запросы каждый раз, когда вы меняете количество полей. Посмотрите на ответ Ней МакГулгана ниже. Там вам просто нужно присоединиться к обеим таблицам. – yoooshi

ответ

1

Является ли «рабочим местом» должность? Запись о работе в предыдущей компании?

1 - плохая идея.

Вы, вероятно, хотите что-то вроде этого:

create table employees (
    id int primary key, 
    name text not null 
); 

create table working_positions (
    id int primary key, 
    employee_id int not null references employees(id), /* foreign key to employees table */ 
    ...other attributes of a working position... 
); 
Смежные вопросы