Страница 1 из 1

Как правильно выбрать ключ

Добавлено: 08 дек 2007, 02:40
Дмитрий Б.
Здравствуйте.

Есть таблица со следующими полями:

Код: Выделить всё

ID      Название   Еще что-то   И еще что-то
0001    ййй               1                    1
0002    ццц              2                    2
0003    ууу               3                    3
0003    ккк               4                    4
0003    еее               5                    5
0004    ууу               6                    6
0005    ффф              7                    7
0006    ыыы              8                    8
0006    ввв               9                    9
0006    ааа               0                     0
Нужно сделать, так чтобы получилась связка ключей "ID" и "Название", следующим образом:
Недопустить повторения записей с одинаковыми значениями ID и Названия, но при этом может быть повторение записей с одинаковыми значениями в "Названии" при разных значениях в ID.

Код: Выделить всё

Например:
ID       Название
// Такое повторение НЕ ДОПУСКАЕТСЯ
001        ааа
001        ааа           
// А так можно
001        ааа
002        ааа
// Так тоже можно
003        ааа
003        ббб
003        ввв 
Как я понимаю это должен быть составной ключ. Правильно ли это?

Подскажите пожалуйста, как создать такой ключ в InterBase

Код: Выделить всё

CREATE TABLE "myTable" 
(
  "ID"	   VARCHAR(10) CHARACTER SET ASCII NOT NULL PRIMARY KEY,
  "NAME"  VARCHAR(10)  CHARACTER SET ASCII NOT NULL FOREIGN KEY,
  ...
);
Правильно-ли такой подход.
Направте не истинный путь.

Добавлено: 08 дек 2007, 03:01
kdv
полная лажа.
Подскажите пожалуйста, как создать такой ключ в InterBase
если в IB 6.0, то лучше не надо, вообще.
так чтобы получилась связка ключей "ID" и "Название"
противоречивое желание. Вам бы почитать на тему проектирования БД.
Дело в том, что абстрактный ID вводится как самостоятельный ПК именно для того, чтобы иметь хоть какой-то атрибут, однозначно идентифицирующий запись.
но при этом может быть повторение записей с одинаковыми значениями в "Названии" при разных значениях в ID.
фигня полная. см. выше.

читайте литературу по проектированию БД, например Дейта. Про первичные ключи и альтернативные ключи.

кроме того, что это за character set ascii ???

Добавлено: 08 дек 2007, 03:21
Дмитрий Б.
Спасибо, но я уже сам разобралься.

Получилось следующее

Код: Выделить всё

CREATE TABLE "myTable" 
(
  "ID"	   VARCHAR(6)   CHARACTER SET ASCII NOT NULL,
  "NAME"   VARCHAR(60)  CHARACTER SET ASCII NOT NULL,
  ...,
  PRIMARY KEY ("ID", "NAME")
);
Попробовал в действие - работает.

А то, что Вы, kdv писали про противоречивые желания, я с этим не согласен, ибо я такое проделывал в Access и в проектирование БД понимаю, хотя и не могу похвастаться суперскими знаниями.

Но все-равно большое спасибо за участие в топике. :D

Добавлено: 08 дек 2007, 11:14
belov-evgenii
Дмитрий Б. писал(а):я такое проделывал в Access и в проектирование БД понимаю
Хех, пипец. Почитай все-таки Дейта

Добавлено: 12 дек 2007, 14:29
Дмитрий Б.
belov-evgenii писал(а):Хех, пипец. Почитай все-таки Дейта
А где это можно почитать Дейта.

Кстати программа работает, и в процессе работы каких-либо багок замечено не было.

Разъясни пожалуйста, на что ты так ругаешся :?: :?

Добавлено: 12 дек 2007, 15:07
WildSery