タグ付けされた質問 「foreign-key」

RDBMSプラットフォームで使用される整合性制約の一種で、列の値が別のテーブルのキー値の範囲の1つと確実に一致するようにします。

1
友情データベース構造の設計:複数値列を使用する必要がありますか?
User_FriendList次の特性を持つと呼ばれるテーブルがあるとします。 CREATE TABLE User_FriendList ( ID ..., User_ID..., FriendList_IDs..., CONSTRAINT User_Friendlist_PK PRIMARY KEY (ID) ); また、上記の表に次のデータが含まれているとします。 + ---- + --------- + --------------------------- + | ID | User_ID | Friendlist_IDs | + ---- + --------- + --------------------------- + | 1 | 102 | 2:15:66:35:26:17:| + ---- + --------- + --------------------------- + …

3
0または1から0または1
Sql Serverでゼロまたは1対ゼロまたは1の関係を最も自然な方法でモデル化するにはどうすればよいですか? サイトの危険をリストした「ハザード」テーブルがあります。サイトで実行する必要がある作業用の「タスク」テーブルがあります。一部のタスクはハザードを修正することであり、タスクは複数のハザードを処理することはできません。一部のハザードにはそれらを修正するタスクがあります。ハザードには2つのタスクを関連付けることができません。 以下は私が考えることができる最高のものです: CREATE TABLE [dbo].[Hazard]( [HazardId] [int] IDENTITY(1,1) NOT NULL, [TaskId] [int] NULL, [Details] [varchar](max) NULL, CONSTRAINT [PK_Hazard] PRIMARY KEY CLUSTERED ( [HazardId] ASC )) GO ALTER TABLE [dbo].[Hazard] WITH CHECK ADD CONSTRAINT [FK_Hazard_Task] FOREIGN KEY([TaskId]) REFERENCES [dbo].[Task] ([TaskId]) GO CREATE TABLE [dbo].[Task]( [TaskId] [int] IDENTITY(1,1) NOT NULL, …

1
FOREIGN KEYに明示的な単一のKEY値を持つMERGE JOIN(INDEX SCAN)を克服する
追加7/11問題は、MERGE JOIN中のインデックススキャンが原因でデッドロックが発生することです。この場合、トランザクションはFK親テーブルでインデックス全体のSロックを取得しようとしますが、以前は別のトランザクションがインデックスのキー値にXロックをかけています。 小さな例から始めましょう(70-461コースのTSQL2012 DBが使用されています): CREATE TABLE [Sales].[Orders]( [orderid] [int] IDENTITY(1,1) NOT NULL, [custid] [int] NULL, [empid] [int] NOT NULL, [shipperid] [int] NOT NULL, ... ) 列[custid], [empid], [shipperid]は、[Sales].[Customers], [HR].[Employees], [Sales].[Shippers]それに応じて相互に関連するパラメーターです。いずれの場合も、親テーブルの参照列にクラスター化インデックスがあります。 ALTER TABLE [Sales].[Orders] WITH CHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([custid]) REFERENCES [Sales].[Customers] ([custid]) ALTER TABLE [Sales].[Orders] WITH CHECK ADD CONSTRAINT …

3
外部キー制約データを取得する方法
スキーマ全体の外部キー情報(各行:参照テーブルとフィールド、参照テーブルとフィールド)を取得できるクエリを探しています。 私はこれを見つけましたが、必要なすべての情報を提供していません:https : //stackoverflow.com/questions/4389228/sql-for-oracle-to-check-if-a-constraint-exists 私は現在それに取り組んでおり、次の数分/時間で解決策になるかもしれません。しかし、誰かがすでに完全に機能する解決策を持っている場合は、それを知って喜んでいます:)

3
FK関係を維持しながら、ID列を含む新しいテーブルにデータを移行する方法
データベース間でデータを移行したい。テーブルスキーマはまったく同じです。 CREATE TABLE Customers( [Id] INT NOT NULL PRIMARY KEY IDENTITY, (some other columns ......) ); CREATE TABLE Orders( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [CustomerId] INT NOT NULL, (some other columns ......), CONSTRAINT [FK_Customers_Orders] FOREIGN KEY ([CustomerId]) REFERENCES [Customers]([Id]) ) 2つのデータベースには異なるデータがあるため、同じテーブルの新しいIDキーは2つのデータベースで異なります。それは問題ではない; 私の目標は、既存のデータに新しいデータを追加することであり、テーブル全体のすべてのデータを完全に置き換えることではありません。ただし、挿入されたデータのすべての親子関係を維持したいと思います。 SSMSの「スクリプトの生成」機能を使用すると、スクリプトは同じIDを使用して挿入を試み、宛先データベースの既存のデータと競合します。データベーススクリプトのみを使用してデータをコピーするにはどうすればよいですか? 宛先のID列を最後の値から通常どおりに継続させたい。 Customers他のUNIQUE NOT NULL制約はありません。他の列に重複するデータがあっても問題ありません(ここでは例として使用CustomersしOrdersているので、全体を説明する必要はありません)。問題は、1対Nの関係についてです。

2
基本設計、初回データベース設計に関するアドバイス
私はJava開発者になるためのコースを取っています。 コースにはデータベースの使用が含まれますが、残念ながら実際に設計することはありません。 ほとんどの場合、事前に作成されたデータベースを取得し、データを挿入、更新、読み取り、または削除するためのコードを実装する必要があります。 しかし、私の最終テストが来るとき、私はデータベースを含む何かを作ることになる可能性が高いので、良いデータベース設計は多くの違いを生むことに気付いたので、設計のこつを得るためにいくつかの小さいものを設計してみたいと思います使用するコードを記述します。 これらの種類の質問がここで許可されていて、広すぎないことを願っています。 これは私が何かのように簡単なために作られた小さなデザインであるclubsとmembersしてaddressesとphonenumbers。 複数のクラブがあります。 各クラブには複数のメンバーがいます(自明) 会員は複数のクラブに所属することはできません メンバーは複数の電話番号とメールアドレスを持つことができます メンバーは1つのアドレスしか持てません アドレスは異なるメンバー(カップルまたは兄弟)に属することができます 私の最大の混乱: Club所有者を説明する列を追加したい場合、誰がメンバーにもなりますが、同じメンバーを2回リストしない場合の最善の方法は何ですか? すべてのテーブルをIDの自動インクリメントに配置する必要がありますか、それとも悪い考えですか?(メリット/デメリット?) [外部キー]タブで外部キーを追加すると、これらは自動的に正しいテーブルに対応しますか、それとも列に追加する必要がありますか?(写真2を参照) そして、すべての私はおそらくnoobiest質問...ドゥ私はの外部キー置くphonenumberとemailPERSON_IDにリンクし、それぞれのテーブル内のか、私は人のテーブルににphoneNumberやメール同上のを置く必要がありますか? (写真の言語が英語ではないことをお詫びします。これがそれほど問題にならないことを願っています)

3
テーブルに必要な外部キーが多すぎる場合、どのような選択肢がありますか?
パーツを定義し、パーツ番号、説明、価格、重量などの情報を保持するベーステーブルがあります。ベーステーブルを参照し、タイプ/カテゴリに基づいてパーツに関する追加情報を提供する約400のテーブルもあります。 最初は外部キー制約を使用して、400のパーツ固有のテーブルのいずれかで参照されている場合、そのパーツをベーステーブルから削除できないようにしましたが、SQL Server 2005の推奨される最大253の外部キーにすぐに達しました。 この状況で、データの整合性を保証する外部キーに代わるものはありますか?データにアクセスする際のパフォーマンスの問題は確認されていませんが、クエリプランが複雑すぎるため、ベーステーブルの既存の部分の更新は失敗します。

1
SQL Serverで非主キーとの関係をどのように作成しますか?
私は、UserIDと呼ばれる主キーとUserNameと呼ばれる別の列の2つの列を持つUsersテーブルを持っています。 UserID(int)PK ユーザー名(varchar(256) どちらも一意ですが、他のテーブルの参照としてUserNameを使用する理由を考えました。たとえば、注文テーブルには、useridではなくUserNameによるuserへの参照があります。 OrderID ユーザー名 SQL Serverのカスケード更新/削除機能を利用できるように、UserNameとUsersテーブルを参照するすべてのテーブル間にリレーションシップを作成します。 しかし、SQL Serverでは、主キー以外の列に関係を作成できません。ユーザーテーブルを変更せずにカスケード更新/削除機能を取得して、UserNameをUserIDではなく主キーにする方法はありますか?

3
JOINステートメントの出力はどのように見えますか?
結合をしばらく使用したいと思っていましたが、出力の視覚化に問題があるため、どのように使用するかわかります。 2つのテーブルがあるとします。 CREATE TABLE Cities ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, city tinyblob ); CREATE TABLE Users ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username TINYBLOB, city INT UNSIGNED, FOREIGN KEY (city) REFERENCES Cities (id) ); アプリケーションがSQLクエリを実行してユーザーのプロファイルデータを取得する場合、結合を使用してユーザーのレコードに関連付けられた都市を取得するにはどうすればよいですか。また、出力されたレコードはどのように表示されますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.