相关疑难解决方法(0)

应用程序开发人员犯的数据库开发错误

应用程序开发人员常见的数据库开发错误是什么?

database database-design

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

为什么使用多列作为主键(复合主键)

这个例子来自w3schools.

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
Run Code Online (Sandbox Code Playgroud)

我的理解是两个列在一起(P_IdLastName)代表表的主键Persons.它是否正确?

  • 为什么有人想要使用多列作为主键而不是单列?
  • 可以将多少列一起用作给定表中的主键?

ddl database-design primary-key relational-database database-table

102
推荐指数
3
解决办法
15万
查看次数

何时使用自动递增的主键,何时不使用?

我试图找出决定是否添加自动递增整数作为表的主键的"最佳实践".

假设我有一个包含化学元素数据的表格.每个元素的原子序数是唯一的,永远不会改变.因此,不是为每列使用自动递增整数,而是使用原子序数可能更有意义,对吗?

如果我有一张书桌,那也是如此吗?我应该使用ISBN还是主键的自动递增整数?或者包含每个人的SSN的员工表?

sql database-design

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

GUID与INT IDENTITY

可能重复:
您如何看待主键?

我知道使用GUID的好处,以及在数据库中使用和INT作为PK的好处.考虑到GUID本质上是128位INT而普通INT是32位,INT是节省空间(尽管在大多数现代系统中这一点通常没有实际意义).

最后,在什么情况下你会发现自己使用INT作为PK而不是GUID?

database guid primary-key

31
推荐指数
8
解决办法
4万
查看次数

主键为文本

在我在教育期间(大约4年前)做过的数据库课程中,我认为建议避免使用字符串作为主键的数据类型.

有人能告诉我在SQL中为主键选择字符变化数据类型的优缺点是什么,以及上述前提是多少?

注意:(我正在使用PostgreSQL数据库).我还在处理一种情况,当你需要从另一个表引用这样一个表时,从而将外键放在字符变化的数据类型上.请同时考虑一下.

sql primary-key foreign-key-relationship sqldatatypes postgresql-9.1

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

选择最好的主键+编号系统

我们正在努力为我们正在创建的资产系统提出一个编号系统,在办公室里对这个主题进行了一些激烈的讨论,所以我决定向SO的专家们询问.

考虑到下面的数据库设计,什么是更好的选择.

替代文字

示例1:使用自动代理键.

=================   ==================
Road_Number(PK)     Segment_Number(PK)
=================   ==================
 1                   1
Run Code Online (Sandbox Code Playgroud)

例2:使用程序生成的PK

=================   ==================
Road_Number(PK)     Segment_Number(PK)
=================   ==================
 "RD00000001WCK"     "00000001.1"
Run Code Online (Sandbox Code Playgroud)

(该00000001.1指它的第一个道路段,这增加了每次你添加一个新的细分如00000001.2)

示例3:使用两者(添加新列)

=======================    ==========================
ID(PK) Road_Number(UK)     ID(PK)  Segment_Number(UK)
=======================    ==========================
 1     "RD00000001WCK"       1       "00000001.1"
Run Code Online (Sandbox Code Playgroud)

只是一些背景信息,我们将使用Road NumberSegment Number报告和其他文档,因此它们必须是唯一的.

我总是喜欢保持简单,所以我更喜欢示例1,但我一直在阅读,你不应该在报告/文档中公开你的主键.所以现在我更多地考虑示例3.

我也倾向于示例3,因为如果我们决定更改资产编号的生成方式,则不必对主键进行级联更新.

您认为我们应该怎么做?

谢谢.

编辑:谢谢大家的好评,给了我很多帮助.

database database-design primary-key

23
推荐指数
3
解决办法
9605
查看次数

SQL主键,INT或GUID还是..?

我有什么理由不使用Integer作为我的表的主键吗?

数据库是SQL-CE,每年大约50,000个条目的两个主表,以及一些次要表.只有两个连接将一直存在于数据库中.但是更新将通过多个TCP套接字连接触发,因此将有许多交叉线程访问并使用相同的数据库连接.虽然活动非常低,但是同样的更新是不太可能的,但可能每天最多可能发生几次.

可能会将LINQ2SQL用于DAL或类型化数据集.

不确定这些信息是否相关,但这就是我要问的原因,因为我不知道:)

sql database sql-server database-design primary-key

10
推荐指数
4
解决办法
8852
查看次数

适用于非常大的应用程序的ASP.NET自定义成员

我必须为一个非常大的网站提供会员解决方案.该站点将使用ASP.NET MVC 2和MS SQL2008数据库构建.

目前的会员提供商看起来似乎有点过分,功能太多了.

我要存储的只是电子邮件/密码和基本个人资料信息,例如First/LastName,电话号码.我只需要2个角色,管理员和用户.

考虑到可能有数百万用户注册,您对此类情景有何建议?StackOverflow使用什么?

我过去经常使用现有的会员API,并将其扩展到存储其他信息等.但是有表格如

aspnet_Applications
aspnet_Paths
aspnet_SchemaVersions
aspnet_WebEvent_Events
aspnet_PersonalizationAllUsers
aspnet_PersonalizationPerUser
Run Code Online (Sandbox Code Playgroud)

这是非常多余的,我从来没有找到用途.

编辑
只是为了澄清@drachenstern回答之后的一些其他冗余,还有一些额外的列,我在Membership/Users表中没有用,但会添加到每个select/insert语句的有效负载中.

  1. MobilePIN
  2. PasswordQuestion/PasswordAnswer (我会做基于电子邮件的密码恢复)
  3. 已批准(用户将始终获得批准)
  4. 评论
  5. MobileAlias
  6. 用户名/ LoweredUsername (或Email/LoweredEmail) [email是用户名,因此只需要其中的1个]

此外,我听说GUID并不是那么快,而且更愿意使用整数(就像Facebook那样),这也是公开曝光的.

我如何创建自己的成员资格提供程序,重新使用一些成员资格API (验证,密码加密,登录cookie等),但只能使用符合我要求的表格?

我们非常欢迎链接到文章和现有实施,我的谷歌搜索返回了一些非常基本的例子.

在此先感谢
Marko

c# sql asp.net-mvc asp.net-membership login

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

SQL Server与单列或多列主键的性能差异?

如果主键是单列(例如,为每行生成的GUID)或多列(例如,外键GUID +偏移号),则表(在插入/更新和查询方面)性能是否存在任何差异? )?

我会假设查询速度应该更快,如果有任何多列主键,但我会想象插入会更慢,因为一个稍微复杂的独特检查?我还想象多列主键的数据类型也很重要(例如,如果其中一列是DateTime类型,则会增加复杂性).这些只是我想要调用答案和讨论(希望!)并且不是基于事实的.

我意识到还有一些其他问题涉及这个主题,但我想知道性能影响而不是管理/业务问题.

sql-server performance primary-key

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

在SQL Server中设计条件数据库关系

我有三种基本类型的实体:人员,企业和资产.每个资产可以由一个且仅一个人或企业拥有.每个人和企业可以拥有0到多个资产.在Microsoft SQL Server中存储此类条件关系的最佳做法是什么?

我最初的计划是在Assets表中有两个可以为空的外键,一个用于People,一个用于Business.其中一个值将为null,而另一个将指向所有者.我在这种设置中看到的问题是它需要应用程序逻辑才能被解释和执行.这真的是最好的解决方案还是有其他选择?

database sql-server database-design

7
推荐指数
1
解决办法
5029
查看次数