我有一个LAMP应用程序需要接受来自用户的外部数据源。通常,这些只是简单的列表(例如,因此用户可以具有定制的下拉列表)。但是,我发现需要更复杂的数据。例如,两个自定义下拉列表,其中第二个下拉列表取决于第一个下拉列表中的选择。
有没有办法在我的数据库中存储外部关系数据,这样我也可以查询它?
答案 0 :(得分:0)
在规范化的数据库模式中,您可以使用列表中的自引用对此进行建模,即
create table list (
id int,
parent_id int,
primary key list_pk (id),
foreign key list_self (parent_id) references list (id)
)
如果下拉选项编号5具有相关选项,您可以像这样查询它们:
select * from list where parent_id = 5
答案 1 :(得分:0)
不在MySQL中,除非为其定义结构,否则将数据分解并将其存储在该结构中。然而,这将是麻烦的。您可以通过在同一个表中引用父项来在单个表中定义层次结构。这样,您甚至可以将XML元素及其属性存储在单个数据库中,只有三个表用于文档,元素和属性。 查询这些表将非常困难,尤其是在MySQL中。在Oracle中,你有CONNECT BY允许递归查询,但速度很慢。
也许你应该研究像Mongo这样的No-SQL数据库,它更适合这类任务。