@“”的替代品?(Alternatives to @“”? [duplicate])
这个问题在这里已有答案:
- 如何在字符串中转义双引号? 3个答案
我有一个字符串,里面有多个
"
in,里面写着@""
当然,xcode认为这是我结束@"
。 有什么替代品我可以用于@""
做同样的事情吗?This question already has an answer here:
- How to escape double quotes in string? 3 answers
I have a string that has multiple
"
in it, which is written inside of@""
and of course, xcode sees this as me ending the@"
. Is there any alternatives I can use for@""
that would do the same thing?
原文:https://stackoverflow.com/questions/14828521
最满意答案
您必须区分主键和代理键 。 自动递增列将是后者的特例。 因此,你的问题是双重的:
- 每个表都需要有主键吗?
- 每个表是否需要有代理主键?
第一个问题的答案是YES,除了在一些特殊情况下(多对多关系的关联表可以被认为是这种特殊情况的一个例子)。 原因是你通常需要能够(如果不是现在,那么将来)能够始终如一地处理该表的各个行 - 例如用于更新/删除。
第二个问题的答案是NO 。 如果你的表代表一个核心商业实体,那么它可以从多对一的关联中引用,使用代理关键字可能是一个好主意; 但并非绝对必要。
有点不清楚你的桌子的功能是什么; 从你的描述中,它听起来像是它具有“值的集合”语义(FK到“主”表+值)。 在这种情况下,某些ORM不支持代理键; 如果这是什么引发了你的问题,那么离开代理人(或者甚至是包中的主要人员)钥匙是可以的。
You have to distinguish between primary key and surrogate key. Auto-incremented column would be a particular case of the latter. Your question, therefore, is twofold:
- Does every table need to have a primary key?
- Does every table need to have a surrogate primary key?
The answer to first question is YES except in some special cases (association table for many-to-many relationship arguably being an example of such a special case). The reason for this is that you usually need to be able (if not right now then in the future) to consistently address individual rows of that table - for updates / deletion, for example.
The answer to the second question is NO. If your table represents a core business entity then OR it can be referenced from many-to-one association, having a surrogate key is probably a good idea; but it's not absolutely necessary.
It's somewhat unclear what your table's function is; from your description it sounds like it has "collection of values" semantics (FK to "main" table + value). Certain ORMs don't support surrogate keys in such circumstances; if that's what has prompted your question it's OK to leave the surrogate (or even primary in case of bag) key off.
相关问答
更多-
来自http://www.sqlite.org/lang_altertable.html的引用 新列可以采用CREATE TABLE语句中允许的任何形式,但具有以下限制: 该列可能没有PRIMARY KEY或UNIQUE约束。 The quote from http://www.sqlite.org/lang_altertable.html The new column may take any of the forms permissible in a CREATE TABLE statement, wi ...
-
SQLite添加主键(SQLite add Primary Key)[2023-05-01]
创建后,您无法以任何重要的方式修改SQLite表。 接受的建议解决方案是创建具有正确要求的新表,并将数据复制到其中,然后删除旧表。 这里是关于这个的官方文档: http : //sqlite.org/faq.html#q11 You can't modify SQLite tables in any significant way after they have been created. The accepted suggested solution is to create a new table wi ... -
主键的性能问题(Performance issue with primary key)[2022-10-17]
从纯技术角度来看,唯一索引与主键具有完全相同的效果。 (在SQLite中,一些主键允许NULL以实现向后兼容。) 唯一的区别是主键约束没有出现在表定义本身中,这对于文档来说可能是一件坏事。 另请参阅SQLite中的CREATE UNIQUE INDEX或INTEGER PRIMARY KEY更高性能 。 From a purely technical point of view, an unique index has exactly the same effect as a primary key. (I ... -
为了创建主键,我应该添加一个autoinc主键吗?(Should I add a autoinc primary key for the sake of having a primary key?)[2023-12-12]
您必须区分主键和代理键 。 自动递增列将是后者的特例。 因此,你的问题是双重的: 每个表都需要有主键吗? 每个表是否需要有代理主键? 第一个问题的答案是YES,除了在一些特殊情况下(多对多关系的关联表可以被认为是这种特殊情况的一个例子)。 原因是你通常需要能够(如果不是现在,那么将来)能够始终如一地处理该表的各个行 - 例如用于更新/删除。 第二个问题的答案是NO 。 如果你的表代表一个核心商业实体,那么它可以从多对一的关联中引用,使用代理关键字可能是一个好主意; 但并非绝对必要。 有点不清楚你的桌子的功能 ... -
我应该在所有三列(userid, set, and key)上创建一个主键(userid, set, and key) 做这个。 使用代理主键会产生一个不用于其他目的的额外列。 与代理主键一起创建UNIQUE INDEX与创建非集群PRIMARY KEY ,并且会导致额外的KEY lookup ,这对性能来说更糟糕。 创建没有PRIMARY KEY的UNIQUE INDEX将导致HEAP-organized表,这将需要额外的RID lookup来访问值:也不是很好。 Should I create a pr ...
-
尝试这个: ALTER TABLE myTable ADD id INT IDENTITY CONSTRAINT id _pk PRIMARY KEY; Try this: ALTER TABLE myTable ADD id INT IDENTITY CONSTRAINT id _pk PRIMARY KEY;
-
主键MVC(Primary Key MVC)[2023-04-14]
在数据库上使用: DBCC CHECKIDENT(表,RESEED,1) 右键单击表,然后选择“新建查询”并在此处运行此命令。 use on database: DBCC CHECKIDENT(TABLE, RESEED,1) Right click over table, and select New Query and run this command here. -
PRIMARY KEY上的索引名称(INDEX NAME on PRIMARY KEY)[2023-12-03]
当然 - 您可以在CREATE TABLE语句中定义PRIMARY KEY约束。 这将生成默认的PRIMARY KEY CREATE TABLE dbo.Table (ID INT IDENTITY PRIMARY KEY, .......) 但你也可以完全定义约束的名称: CREATE TABLE dbo.Table2 (ID INT IDENTITY CONSTRAINT PK_Table2 PRIMARY KEY, ......) Sure - you can define ... -
编辑主键(Edit Primary Key)[2023-06-20]
一般来说,你不应该编辑主键。 SQL Server中的主键通常具有一个集群唯一索引,因此编辑主键意味着您可能不得不重建索引(可能不是每次都是,但取决于偏移)。 相反,我会创建一个假主键,如SQL Server中的IDENTITY列,并在名称列上放置一个UNIQUE约束。 如果您的表增长很大,则检索int列上的项目也会比在varchar()列上检索项目更快。 更新:由于我被告知我没有回答问题(即使这是可接受的答案),但可以更改SQL Server中的主键值。 但它在技术上并不是编辑操作,因为引用完整性可能会阻 ... -
主键是否必要?(Is a primary key necessary? [duplicate])[2022-03-20]
这是一个主观问题,所以我希望你不要介意我回答一些意见:) 在我所做的绝大多数表格中 - 我说的是95%+ - 我已经添加了一个主键,并且很高兴我做到了。 这可能是我表中最关键的唯一字段(想想“社会安全号码”),或者通常只是一个自动递增的数字,它允许我在查询时快速轻松地引用字段。 后一种用法是最常见的,它甚至有自己的名称:“代理”或“合成”键。 这是由数据库自动生成的值,而不是从应用程序数据派生的值。 如果要在表之间添加关系,则此代理键可立即用作外键。 正如其他人回答的那样,这些密钥非常常见,即使你不这样做, ...