Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 03.02.2014
Сообщений: 103

Ключи

12.04.2018, 04:47. Показов 928. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возник такой вопрос, в данной БД не всегда будут использованы все сущности, то есть ключи в них будут пустые. Можно ли это как-то обойти не добавляю другого ключа типа id?
Subfamily Subgenus Section Series - сущности не всегда заполняемые

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
DROP TABLE "Species" IF EXISTS;
DROP TABLE "Series" IF EXISTS;
DROP TABLE "Section" IF EXISTS;
DROP TABLE "Subgenus" IF EXISTS;
DROP TABLE "Genus" IF EXISTS;
DROP TABLE "Subfamily" IF EXISTS;
DROP TABLE "Family" IF EXISTS;
 
 
CREATE TABLE "Family" (
    "Name_Fml" VARCHAR(50) NOT NULL,
    CONSTRAINT "K1" PRIMARY KEY ("Name_Fml")
);
 
CREATE TABLE "Subfamily" (
    "Name_Sbf" VARCHAR(50) NOT NULL,
    "Name_Fml" VARCHAR(50) NOT NULL,
    CONSTRAINT "K2" PRIMARY KEY ("Name_Sbf"),
    CONSTRAINT "С1" FOREIGN KEY ("Name_Fml")
    REFERENCES "Family" ("Name_Fml")
);
 
CREATE TABLE "Genus" (
    "Name_Gn" VARCHAR(50) NOT NULL,
    "Name_Sbf" VARCHAR(50) NOT NULL,
    CONSTRAINT "K3" PRIMARY KEY ("Name_Gn"),
    CONSTRAINT "С2" FOREIGN KEY ("Name_Sbf")
    REFERENCES "Subfamily" ("Name_Sbf")
);
 
CREATE TABLE "Subgenus" (
    "Name_Sbn" VARCHAR(50) NOT NULL,
    "Name_Gn" VARCHAR(50) NOT NULL,
    CONSTRAINT "K4" PRIMARY KEY ("Name_Sbn"),
    CONSTRAINT "С3" FOREIGN KEY ("Name_Gn")
    REFERENCES "Genus" ("Name_Gn")
);
 
CREATE TABLE "Section" (
    "Name_Stn" VARCHAR(50) NOT NULL,
    "Name_Sbn" VARCHAR(50) NOT NULL,
    CONSTRAINT "K5" PRIMARY KEY ("Name_Stn"),
    CONSTRAINT "С4" FOREIGN KEY ("Name_Sbn")
    REFERENCES "Subgenus" ("Name_Sbn")
);
 
CREATE TABLE "Series" (
    "Name_Srs" VARCHAR(50) NOT NULL,
    "Name_Stn" VARCHAR(50) NOT NULL,
    CONSTRAINT "K6" PRIMARY KEY ("Name_Srs"),
    CONSTRAINT "С5" FOREIGN KEY ("Name_Stn")
    REFERENCES "Section" ("Name_Stn")
);
 
CREATE TABLE "Species" (
    "Name_Spc" VARCHAR(50) PRIMARY KEY,
    "Name_Srs" VARCHAR(50) NOT NULL,
    "Equator_d" INTEGER NOT NULL,
    "Polar_axis" INTEGER NOT NULL,
    "Laesura_long" INTEGER NOT NULL,
    "Laesura_wide" INTEGER NOT NULL,
    "Roller_like" INTEGER,
    "Tubercle_along_l" INTEGER,
    "Equatorial_ridge" INTEGER,
    "Equator_ridge_proximal" INTEGER,
    "Equator_ridge_distal" INTEGER,
    "Tubercle_proximal" INTEGER,
    "Tubercle_distal" INTEGER,
    "Folds_proximal" INTEGER,
    "Folds_distal" INTEGER,
    "Form_spore" VARCHAR(50) NOT NULL,
    "Form_distal_side" VARCHAR(50) NOT NULL,
    "Form_proximal_side" VARCHAR(50) NOT NULL,
    "Surface_exosporium" VARCHAR(50) NOT NULL,
    CONSTRAINT "K7" PRIMARY KEY ("Name_Spc"),
    CONSTRAINT "С6" FOREIGN KEY ("Name_Srs")
    REFERENCES "Series" ("Name_Srs")
);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2018, 04:47
Ответы с готовыми решениями:

ER-моделирование, ключи, связи
Если в таблице A существует внешний ключ FK_B (может быть пустым), ссылающийся на таблицу B (в таблице B первичный ключ состоит из двух...

Субд неизвестно. Первичные и внешние ключи
Какие атрибуты таблицы являются внешними ключами, а какие первичными? create table permissions ( obj_id INT8 ...

Внешние ключи
Здраствуйте, помогите пожалуйста с созданием базы данных, запутался с внешними ключами, не понимаю как исправить ошибки. P.S Ниже мои...

1
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
12.04.2018, 07:25
В корне неверная структура.

Смотри, ты сослал таблицу Subfamily на таблицу Family.
То есть (если бы ключей не было) у тебя на одну запись в Family может ссылаться несколько записей в Subfamily.
Кроме того, несколько разных Family может иметь ОДИНАКОВУЮ Subfamily.

Но ты при этом объявляешь, что КАЖДАЯ Subfamily может в таблице лежать ТОЛЬКО один раз.

Т.е. ты уже не сможешь к разным Family добавить одну и ту же Subfamily , а значит при твоем дизайне смысла в отдельной таблице Subfamily нулевой. С таким же успехом можно было бы добавить поле Name_Sbf в таблицу Family и сделать по нему уникальный индекс (что, вообще тоже неверно бы было)

Ну и так далее по тексту.

P.S: Вообще первичные ключи на базе текстовых полей (за редким исключением) - как правило зло. Используй суррогатные ключи. Т.е. добавь везде идентификаторы и ссылай таблицы друг на друга по идентификатору. Уникальность какого-то поля (или сочетания полей) можно форсировать уникальными индексами, при необходимости.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2018, 07:25
Помогаю со студенческими работами здесь

Вторичные ключи
Подскажите плз. Я в базе объединяю 3 таблицы через их первичные ключи с 1 через ее вторичные. Все свойства FK установились по...

Ключи и нормальные формы
Определить ключи и проверить заданное отношение на предмет состояния в 1,2,3 нормальных формах. 1 Студент(№зачетки,ФИО,год...

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

Составные ключи Foreign и Primary
Всем привет! Коллеги подскажите вот что. Ниже код создания двух таблиц. Таблица с департаментами имее тсоставной primary key по 2-м полям....

Что значат ключи в диаграммах?
что значат ключи в диаграммах? http://mut.ru/1c_relsch/main.php?p=mssql ключ к одной таблице и просто ключи к таблицам.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru