PostgreSQL是否接受我的表格?

PostgreSQL是否接受我的表格?,postgresql,Postgresql,我想在PostgreSQL数据库中创建一个表来存储用户数据(帐户信息、联系人信息、地理信息)。我已经输入了以下SQL,我想知道PostgreSQL是否可以接受(在最佳实践、数据类型和长度方面) 表的PostgreSQL端看起来还可以。您可以考虑将 VARCHAR(X)类型更改为文本< /代码>(签出)。主键可以作为userID串行主键,引入,尽管这对表结构没有影响 在不了解完整表结构的情况下,无法对最佳实践进行更多的评论,但这些注意事项大多不是特定于PostgreSQL的。是的,可以接受,并且在

我想在PostgreSQL数据库中创建一个表来存储用户数据(帐户信息、联系人信息、地理信息)。我已经输入了以下SQL,我想知道PostgreSQL是否可以接受(在最佳实践、数据类型和长度方面)


表的PostgreSQL端看起来还可以。您可以考虑将<代码> VARCHAR(X)<代码>类型更改为<代码>文本< /代码>(签出)。
主键
可以作为
userID串行主键,
引入,尽管这对表结构没有影响


在不了解完整表结构的情况下,无法对最佳实践进行更多的评论,但这些注意事项大多不是特定于PostgreSQL的。

是的,可以接受,并且在最佳实践、数据类型和长度方面不能谈论
,如果
不了解您的需求(您将如何操作它).我个人建议将地址信息规范化为
地址
实体,并使用
地址类型
字段指示它是邮寄地址、法定居住地址还是次要联系地址。电话联系人也是如此。而且,所有
varchar(255)
的东西都是过时的;为什么是255?您使用的是Pascal字符串吗?使用
text
或纯
varchar
,除非您特别希望限制长度。如果你这么做了,那么就设置一个你已经考虑过的长度限制,而不是旧系统的任意限制。@CraigRinger-你提出了一个非常有趣的提示,那就是地址实体位。我从来没有真正开始使用实体对象,但我想知道您的建议如何帮助或阻碍数据库的性能。此外,我数据库中的某些列是从现有数据库继承的,但我也不承认自己在手动创建数据库方面有很好的处理能力。@Jared首先关注设计正确性,其次关注性能。如果您有性能问题,您可以根据需要选择性地取消规范化或添加物化视图。根据查询模式,将地址等内容拆分为副表可能有帮助,也可能有阻碍;可能两者兼而有之。
CREATE TABLE users (
userID SERIAL,
username VARCHAR(255) NOT NULL,
password VARCHAR(60) NOT NULL,
email VARCHAR(255) NOT NULL,
active VARCHAR(255) NOT NULL,
lenderAcct BOOLEAN NOT NULL DEFAULT FALSE,
resetToken VARCHAR(255) DEFAULT NULL,
resetComplete VARCHAR(3) DEFAULT 'No',
CONSTRAINT users_pk PRIMARY KEY (userID),
firstName VARCHAR(20) NOT NULL,
middleName VARCHAR(20),
lastName VARCHAR(20) NOT NULL,
primaryPhone VARCHAR(50) NOT NULL,
primaryPhoneExt VARCHAR(10),
altPhone VARCHAR(50),
altPhoneExt VARCHAR(10),
fax VARCHAR(50),
legalAddress1 VARCHAR(25) NOT NULL,
legalAddress2 VARCHAR(25),
legalCity VARCHAR(25) NOT NULL,
legalState VARCHAR(25) NOT NULL,
legalZip VARCHAR(16) NOT NULL,
legalCountry VARCHAR(25) NOT NULL,
mailAddress1 VARCHAR(25) NOT NULL,
mailAddress2 VARCHAR(25),
mailCity VARCHAR(25) NOT NULL,
mailState VARCHAR(25) NOT NULL,
mailZip VARCHAR(16) NOT NULL,
mailCountry VARCHAR(25) NOT NULL
);