在MySQL数据库中存储链表的最好方法是什么,这样插入就很简单(即不必每次都对一堆东西重新索引),并且可以很容易地按顺序取出链表?
发布于 2015-04-07 00:42:37
这是我自己一段时间以来一直在努力弄清楚的事情。到目前为止,我找到的最好的方法是使用以下格式(这是伪代码)为链表创建一个表:
LinkedList(
)
key1是起点。Key2是一个外键,链接到下一列中的自身。因此,您的专栏将链接某些内容,如下所示
col1
Key1是col1的主键。key2是通向col2的key1的外键
col2
空
来自col2的key2被设置为null,因为它没有指向任何内容
当您第一次在中输入表的列时,需要确保将key2设置为null,否则会出现错误。输入第二列后,可以返回并将第一列的key2设置为第二列的主键。
这样做的最佳方法是一次输入多个条目,然后返回并相应地设置外键(或者构建一个GUI来为您完成此操作)
下面是我准备的一些实际代码(所有实际代码都在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不会让您一步到位,因为外键引用的表还不存在。
链表在一对多关系中特别强大。那么,如果您曾经想要创建一个外键数组呢?好的,这是一种方法!您可以创建一个指向链接列表中第一列的主表,然后可以使用指向所需信息表的外键,而不是" information“字段。
示例:
假设您有一个维护表单的官僚机构。
假设他们有一张叫做文件柜的桌子
FileCabinet(
每列包含文件柜的主键和文件的外键。这些文件可以是税务表格、健康保险文件、实地考察许可单据等
文件(
)
它用作文件的容器
文件(
文件上的
)
这是特定的文件
可能有更好的方法来做到这一点,根据您的特定需求,确实有一些方法。这个例子只是说明了可能的用法。
https://stackoverflow.com/questions/65205
复制相似问题