Это то, что я пытался выяснить некоторое время сам. Наилучший способ, который я нашел до сих пор, - это создать одну таблицу для связанного списка в следующем формате (это псевдокод):
LinkedList (
)
ключ1 является отправной точкой. Key2 - это внешний ключ, который ссылается на себя в следующем столбце. Таким образом, ваши столбцы будут связывать что-то вроде этого
col1
- key1 = 0,
- информация = 'привет'
- key2 = 1
Ключ1 является первичным ключом col1. ключ2 - это внешний ключ, ведущий к ключу1 из col2
col2
- key1 = 1,
- information = 'wassup'
- key2 = null
key2 из col2 имеет значение null, потому что ни на что не указывает
Когда вы впервые вводите столбец для таблицы, вам нужно убедиться, что для key2 установлено значение null, иначе вы получите ошибку. После ввода второго столбца вы можете вернуться назад и установить для key2 первого столбца первичный ключ второго столбца.
Это лучший способ для одновременного ввода большого количества записей, затем вернуться назад и соответственно установить внешние ключи (или создать графический интерфейс, который сделает это за вас)
Вот некоторый реальный код, который я подготовил (весь реальный код работал на MSSQL. Возможно, вы захотите провести исследование для используемой версии SQL!):
createtable.sql
create table linkedlist00 (
key1 int primary key not null identity(1,1),
info varchar(10),
key2 int
)
register_foreign_key.sql
alter table dbo.linkedlist00
add foreign key (key2) references dbo.linkedlist00(key1)
* Я поместил их в два отдельных файла, потому что это нужно сделать в два этапа. MSSQL не позволит вам сделать это за один шаг, потому что таблица еще не существует для ссылки на внешний ключ.
Связанный список особенно силен в отношениях один-ко-многим . Итак, если вы когда-нибудь хотели сделать массив внешних ключей? Ну, это один из способов сделать это! Вы можете создать первичную таблицу, которая указывает на первый столбец в таблице связанных списков, а затем вместо поля «информация» вы можете использовать внешний ключ для нужной информационной таблицы.
Пример:
Допустим, у вас есть бюрократия, которая хранит формы.
Допустим, у них есть таблица с именем картотечный шкаф
FileCABINET (
- Идентификатор кабинета (шт.)
- Идентификатор файла (fk)
)
каждый столбец содержит первичный ключ для кабинета и внешний ключ для файлов. Это могут быть налоговые формы, документы медицинского страхования, разрешения на поездку и т. Д.
Files (
Идентификатор файла (pk)
Идентификатор файла (fk)
ID следующего файла (fk)
)
служит контейнером для файлов
Файл (
Идентификатор файла (pk)
Информация о файле
)
это конкретный файл
Могут быть более эффективные способы сделать это, и есть, в зависимости от ваших конкретных потребностей. Пример только иллюстрирует возможное использование.