数据库中的数据库?

时间:2011-08-09 13:28:31

标签: mysql database database-design data-structures

我有一个LAMP应用程序需要接受来自用户的外部数据源。通常,这些只是简单的列表(例如,因此用户可以具有定制的下拉列表)。但是,我发现需要更复杂的数据。例如,两个自定义下拉列表,其中第二个下拉列表取决于第一个下拉列表中的选择。

有没有办法在我的数据库中存储外部关系数据,这样我也可以查询它?

2 个答案:

答案 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数据库,它更适合这类任务。