2010-09-22 3 views
3

Я создаю небольшую базу данных для лаборатории. У нас есть некоторые правила для создания строки идентификатора для каждого элемента, поэтому я не хочу хранить его в моей базе данных. Проблема в том, что некоторые изменения в данных, например, реакция человека на этот элемент изменились, вызывает изменение строки ID. Но я не могу исправить его для печатных документов. Как я могу сохранить старую версию этой строки идентификатора. Я могу просто не менять его, но это нарушит правила. Какие-либо предложения?Как хранить старую версию ID-строки в дизайне базы данных?

+0

вопрос не имеет смысла (для меня, по крайней мере) –

+0

@Mitch Wheat. Да, это не имеет смысла, если мы не пытаемся изменить этот идентификатор. Но если придерживаться правил, мы должны их изменить. – gstar2002

ответ

1

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

Для первичного ключа используйте auto-incrementing integer - очень мало исключений из этого.

Добавить столбцы для вещей, которые вы пытаетесь представить в этой смарт-ключ, как: Person, Project, Response и т.д.

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

Смарт-ключ является неправильным здесь, с точки db-design, этот ключ довольно глупый.

+0

Спасибо Дамир. Я, вероятно, сделаю, как вы сказали. И я добавлю поле для заметок. Таким образом, они могут хранить сейчас версию ID там. Но тогда я не могу искать с новым ID, я должен искать в поле Person, Project, Response ... возможно, мне нужна таблица IdVersions? – gstar2002

+0

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

0

, например, ответ лица для этого элемента изменился, вызывает чан из ID Струнного

Похоже, рабочий процесс в вашей лаборатории нарушается. Идентификаторы никогда не должны меняться. Постарайтесь привлечь внимание к начальству.

+0

@ thedeveloper Art. Идентификатор выглядит как «abc/12/xzy», abc - аббревиатура названия проекта, xzy - сокращение имени человека. Люди используют его, потому что они могут получить некоторую информацию из этой строки. Но вы правы, может быть, мы должны использовать это правило только для создания этого идентификатора. – gstar2002

2

Для расширения точки Дамира

A «Smart Key» является то, что вы говорите, когда

У нас есть некоторые правила, чтобы сделать строку идентификатора для каждого пункта

Вы с указанием названия изделия, возможно, код категории и добавление

человек ответ на этот товар

Так что, если бы я был ответственен за Beakers, которые могут быть элемент ID

СТЕКЛО-МЕНЗУРКУ-SPAGE

Вот код 'становится «Смарт-ключ», когда вы используете его в базе данных как Основной ключ.

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

Как указывает Дамир, вы можете сохранить это значение в другом столбце, который мы будем называть ALTERNATE KEY или CANDIDATE KEY ... он уникален, это может быть ПК, но это не так. Вам понадобится уникальное ограничение для столбца, но не ограничение первичного ключа.

+0

Спасибо за вашу экспансию! Стефани. – gstar2002

+0

Нет +1? Просто спасибо? Хорошо, я благодарен за это. –

+0

:) Я даю вам верх, потому что вы правы. В своем ответе и в своем комментарии. – rics

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