1

多言語アプリケーションのデータベーススキーマを設計しようとしています。私はこれまでこのアドレスからのサンプルを見つけました。 http://fczaja.blogspot.com/2010/08/multilanguage-database-design.html多言語データベース設計

しかし、私はこのサンプルを理解していません。最初にapp_productにId値を挿入する必要がありますか? app_product_translationでこれらの値がProductIdに該当することを知るにはどうすればよいですか?

CREATE TABLE ref_language (
    Code Char(2)NOT NULL, 
    Name Varchar(20) NOT NULL, 
    PRIMARY KEY (Code) 
); 

CREATE TABLE app_product (
Id Int IDENTITY NOT NULL, 
PRIMARY KEY (Id) 
); 

CREATE TABLE app_product_translation (
ProductId Int NOT NULL, 
LanguageCode Char(2) NOT NULL, 
Description Text NOT NULL, 
FOREIGN KEY (ProductId) REFERENCES app_product(Id), 
FOREIGN KEY (LanguageCode) REFERENCES ref_language(Code) 
); 

答えて

1

これは、その前提でSQLServerコードのように見えます。

はい、最初にapp_productを挿入する必要があります。しかし、id列の値を挿入することはできません。これはID列であるため、自動的に割り当てられます。

挿入後にID列の値を確認するには2つの方法があります。

  1. INSERT文のOUTPUT句。 ID列だけでなく、挿入された値も返すことができます。
  2. @@ Identity変数。
declare @lastid int 
insert into x values (1,2,3) 
set @lastid = @@identity 

insert into y values (@lastid, a, b, c) 
(はるか伝統と人気によります)