小编Mik*_*ll'的帖子

有没有时间使用数据库1:1的关系是有道理的?

我前几天正在考虑规范化,而且我想到了,我想不出一个数据库中应该有1:1关系的时间.

名称:SSN?我将它们放在同一个表PersonID:AddressID?同样,同桌.

我可以提出一个很多或者很多的例子:很多(有适当的中间表),但从不是1:1.

我错过了一些明显的东西吗

sql database-design one-to-one database-normalization

157
推荐指数
14
解决办法
3万
查看次数

Facebook数据库设计?

我一直想知道Facebook如何设计朋友< - >用户关系.

我认为用户表是这样的:

user_email PK
user_id PK
password 
Run Code Online (Sandbox Code Playgroud)

我用用户的数据(性别,年龄等通过用户电子邮件连接,我会假设)来计算表格.

它是如何将所有朋友连接到此用户的?

像这样的东西?

user_id
friend_id_1
friend_id_2
friend_id_3
friend_id_N 
Run Code Online (Sandbox Code Playgroud)

可能不是.因为用户数量未知并且将会扩展.

sql database-design facebook database-normalization database-table

130
推荐指数
10
解决办法
17万
查看次数

更新文本字段时在postgresql中插入换行符

我正在尝试更新postgresql数据库的表中的文本字段.

UPDATE public.table SET long_text = 'First Line' + CHAR(10) + 'Second line.' WHERE id = 19;
Run Code Online (Sandbox Code Playgroud)

我的预期结果是单元格看起来像这样:

First Line
Second line

上面的语法返回错误.

postgresql char sql-update

38
推荐指数
4
解决办法
5万
查看次数

是否值得将地址信息分成单独的数据库表?

我有一个名为"Person"的表,其中包含以下字段

  • Id(主键)
  • 名字
  • 出生日期
  • 国家

是应该将City,State或Country等标准化并分解到自己的表中,然后此表包含CityId和StateId列.我们正在讨论这是一个好的还是坏的决定.

要添加,我确实有一个City和一个State表(由于与此person表无关的其他原因).无论是否有这个额外的事实,我都很好奇.

database database-design database-normalization

20
推荐指数
4
解决办法
5655
查看次数

多个模式与巨大的表格

考虑一个移动设备管理器系统,其中包含每个用户的信息,例如存储他已安装在手机上的应用程序的表,审核详细信息,通知信息等.为每个用户创建一个单独的模式以及相应的表是明智的吗?对于单个用户而言,表的数量很大,每个用户大约30个表.拥有一个单独的模式,将所有这些信息放入这些表(反过来创建庞大的表?)或为每个用户设置模式会更好吗?

提前致谢

database database-design multi-tenant database-performance

17
推荐指数
1
解决办法
6934
查看次数

用户要求非规范化数据库

我处于开发数据库驱动系统的早期阶段,系统的最大部分围绕着继承类型的关系.有一个包含大约10列的父实体,并且将有大约10个从父级继承的子实体.每个子实体将有大约10列.我认为为父实体提供自己的表并为每个子项提供自己的表 - 每个子类的表结构是有意义的.

今天,我的用户要求查看我创建的系统的结构.他们对每子类表结构的想法犹豫不决.他们更喜欢一个大~100列表,因为它们更容易执行自己的自定义查询.

为了用户的缘故,我应该考虑对数据库进行非规范化吗?

database database-design denormalization database-normalization

15
推荐指数
4
解决办法
992
查看次数

外键引用可以在PostgreSQL中包含NULL值吗?

举个例子

create table indexing_table
(
  id SERIAL PRIMARY KEY,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
);
Run Code Online (Sandbox Code Playgroud)

下表之间有区别吗?

表格1:

create table referencing_table
(
  indexing_table_id INTEGER references indexing_table
);
Run Code Online (Sandbox Code Playgroud)

表2:

create table referencing_table
(
  indexing_table_id INTEGER references indexing_table NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

或者,在表1的情况下,没有NOT NULL约束,我们是否允许插入包含NULL值的记录?

postgresql reference foreign-keys primary-key

12
推荐指数
2
解决办法
2万
查看次数

数据库架构规范化检查器?

我有兴趣了解像这样运行的工具:

给定数据库模式和一些数据,建议模式是否可能以任何特定的正常形式构建,然后告诉如何对模式进行分解以产生进一步的规范化.

基本上,用于数据库模式设计的静态分析工具.

像其他静态分析工具一样,这样的数据库工具不需要生成完美的结果(我怀疑这种"完美"工具在计算上是可行的),或者适用于所有数据库系统,或免费/开源,或其他任何东西.该工具不必独立; 它可以捆绑为一些复杂的IDE功能.我只是想知道那里有什么.

database database-normalization genexus

9
推荐指数
2
解决办法
5939
查看次数

为什么"int main(anything_you_type)"不会产生任何错误?

在这里,我已经在主要参数声明中写了我的名字,但是这个程序仍然有效并且没有给出任何警告.

#include <stdio.h>
int main(Mr32) 
{
    printf("why this works?");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

每当我写任何东西代替mr32时,代码仍然有效.我真的不知道为什么会这样.根据C编程标准,这是错误的,对吧?

编辑: 我已经尝试过 - 但它没有发出任何警告.

我认为这应该是错误,因为我没有做标准的C函数定义声明

在c中,每个函数定义都必须遵循此格式

return-type function_name ( arg_type arg1, ..., arg_type argN ); 
Run Code Online (Sandbox Code Playgroud)

这也应该适用于main()吧.. ??

好的-Wextra显示警告mr32默认为int.

那么为什么main()中的任何参数的默认类型都是int?

c compiler-construction error-handling gcc program-entry-point

9
推荐指数
1
解决办法
402
查看次数

Postgres Materialize导致删除查询性能不佳

我有一个DELETE查询,我需要在PostgreSQL 9.0.4上运行.我发现它是高性能的,直到它在subselect查询中遇到524,289行.

例如,在524,288,没有使用物化视图,成本看起来很不错:

explain DELETE FROM table1 WHERE pointLevel = 0 AND userID NOT IN
(SELECT userID FROM table2 fetch first 524288 rows only);
                                                QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Delete  (cost=13549.49..17840.67 rows=21 width=6)
   ->  Index Scan using jslps_userid_nopt on table1  (cost=13549.49..17840.67 rows=21 width=6)
         Filter: ((NOT (hashed SubPlan 1)) AND (pointlevel = 0))
         SubPlan 1
           ->  Limit  (cost=0.00..12238.77 rows=524288 width=8)
                 ->  Seq Scan on table2  (cost=0.00..17677.92 rows=757292 width=8)
(6 rows)

但是,一旦我达到524,289,物化视图就会发挥作用,DELETE查询变得更加昂贵:

explain DELETE FROM table1 WHERE pointLevel = 0 AND userID NOT IN …

database postgresql materialized-views query-performance sql-delete

8
推荐指数
1
解决办法
651
查看次数