From 74fb1ae7064cdf64a7bad1da35472755d281d5e0 Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Fri, 10 Mar 2023 09:11:31 +0900 Subject: [PATCH 1/3] =?UTF-8?q?ddl.sgml=E3=81=AEPostgreSQL=2015.0=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E3=81=A7=E3=81=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/src/sgml/ddl.sgml | 72 ++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index ffa9364fad9..372c5288a04 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1175,10 +1175,10 @@ CREATE TABLE products ( columns. This behavior can be changed by adding the clause NULLS NOT DISTINCT, like --> -《機械翻訳》一般に、一意性制約は、制約に含まれるすべての列の値が等しい表に複数の行がある場合に違反します。 -デフォルトでは、2つのNULL値はこの比較では等しくないとみなされます。 -つまり、一意性制約が存在する場合でも、制約された列の少なくとも1つにNULL値を含む重複行を格納できます。 -この動作は、次のように句NULLS NOT DISTINCTを追加することで変更できます。 +一般的には、制約に含まれるすべての列の値が等しい複数の行が表の中にある場合に、一意性制約に違反します。 +この比較において、デフォルトでは2つのNULL値は等しくないとみなされます。 +つまり、一意性制約が存在する場合でも、制約が適用される列の少なくとも1つにNULL値を含むような重複行が格納できるということです。 +この動作は、次のようにNULLS NOT DISTINCT句を追加することで変更できます。 CREATE TABLE products ( product_no integer UNIQUE NULLS NOT DISTINCT, @@ -1205,8 +1205,8 @@ CREATE TABLE products ( implementations have a different behavior. So be careful when developing applications that are intended to be portable. --> -《機械翻訳》デフォルトの動作は、NULLS DISTINCTを使用して明示的に指定できます。 -一意性制約でのデフォルトのNULL処理は、標準SQLに従って実装によって定義されますが、他の実装では動作が異なります。 +デフォルトの動作は、NULLS DISTINCTを使用して明示的に指定できます。 +標準SQLによれば、一意性制約でのデフォルトのNULL処理は実装依存で、他の実装では動作が異なります。 そのため、移植可能なアプリケーションを開発する際には注意が必要です。 @@ -1663,12 +1663,12 @@ CREATE TABLE order_items ( product manager entry gets deleted, then setting the product's product manager to null or a default might be useful. --> -《機械翻訳》ON DELETEアクションの適切な選択は、関連するテーブルが表すオブジェクトの種類によって異なります。 +ON DELETEアクションの適切な選択は、関連するテーブルが表すオブジェクトの種類によって異なります。 参照元テーブルが、参照先テーブルによって表されるオブジェクトのコンポーネントであり、独立して存在できないものを表している場合は、CASCADEが適切です。 2つのテーブルが独立したオブジェクトを表している場合は、RESTRICTまたはNO ACTIONが適切です。 -実際に両方のオブジェクトを削除するアプリケーションは、このことを明示的に指定し、2つのdeleteコマンドを実行する必要があります。 +実際に両方のオブジェクトを削除するアプリケーションは、このことを明示的に指定し、2つの削除コマンドを実行する必要があります。 前述の例では、受注アイテムは受注の一部であり、受注が削除された場合に自動的に削除されるようにすると便利です。 -ただし、製品と受注は異なるため、製品を削除すると一部の受注アイテムが自動的に削除さ問題があると考えられます。 +ただし、製品と受注は異なるため、製品を削除すると一部の受注アイテムが自動的に削除されてしまうのは問題となると考えられます。 外部キー関係がオプションの情報を表す場合は、アクションSET NULLまたはSET DEFAULTが適切です。 たとえば、製品テーブルに製品マネージャへの参照が含まれていて、製品マネージャのエントリが削除された場合、製品の製品マネージャをNULLまたはデフォルトに設定すると便利です。 @@ -1680,9 +1680,9 @@ CREATE TABLE order_items ( columns of the foreign-key constraint are set; setting only a subset is useful in some special cases. Consider the following example: --> -《機械翻訳》アクションSET NULLおよびSET DEFAULTでは、列リストを使用して、設定する列を指定できます。 +アクションSET NULLおよびSET DEFAULTでは、列リストを使用して、設定する列を指定できます。 通常、外部キー制約のすべての列が設定されます。 -サブセットのみを設定すると、特殊な場合に役立ちます。次の例を参照してください。 +サブセットのみを設定すると、特殊な場合に役立ちます。次の例を見てください。 CREATE TABLE tenants ( tenant_id integer PRIMARY KEY @@ -1707,7 +1707,7 @@ CREATE TABLE posts ( the column tenant_id to null, but that column is still required as part of the primary key. --> -《機械翻訳》カラムが指定されていない場合、外部キーもカラムtenant_idをnullに設定しますが、このカラムはプライマリ・キーの一部として必要です。 +カラムが指定されていない場合、外部キーもtenant_id列をnullに設定しますが、このカラムは主キーの一部として必要です。 @@ -1720,8 +1720,8 @@ CREATE TABLE posts ( In this case, CASCADE means that the updated values of the referenced column(s) should be copied into the referencing row(s). --> -《マッチ度[70.975057]》ON DELETEに似たもので、被参照列が変更(更新)された時に呼び出されるON UPDATEもあります。 -これらが行えるアクションは同じです。 +ON DELETEについても同様で、被参照列が変更(更新)された時に呼び出されるON UPDATEもあります。 +列リストがSET NULLSET DEFAULTで指定できない点を除き、可能なアクションは同じです。 この場合、CASCADEは被参照列の更新後の値が参照行にコピーされることを意味します。 @@ -2592,8 +2592,8 @@ ALTER TABLE products RENAME TO items; The following sections and chapters will also show you how these privileges are used. --> -《マッチ度[87.087518]》権限にはいくつかの種類があります。 -すなわちSELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTEUSAGEです。 +権限にはいくつかの種類があります。 +すなわちSELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTEUSAGESETALTER SYSTEMです。 特定のオブジェクトに適用可能な権限は、オブジェクトの型(テーブル、関数など)により変わります。 これらの権限の詳細な意味を以下に示します。 以降の節および章でもこれらの権限の使用方法についての説明があります。 @@ -2994,7 +2994,7 @@ REVOKE ALL ON accounts FROM PUBLIC; on any parameter, it is meaningless except for parameters that would normally require superuser privilege to set.) --> -《機械翻訳》サーバー構成パラメーターを現在のセッション内で新しい値に設定できるようにします(この特権はどのパラメーターにも付与できますが、通常はスーパーユーザー特権を必要とするパラメーター以外は意味がありません)。 +サーバ構成パラメータを現在のセッション内で新しい値に設定できるようにします(この特権はどのパラメータにも付与できますが、通常はスーパーユーザ特権を必要とするパラメーター以外は意味がありません)。 @@ -3007,7 +3007,7 @@ REVOKE ALL ON accounts FROM PUBLIC; Allows a server configuration parameter to be configured to a new value using the command. --> -《機械翻訳》コマンドを使用して、サーバ設定パラメータを新しい値に設定できるようにします。 +コマンドを使用して、サーバ設定パラメータを新しい値に設定できるようにします。 @@ -3049,8 +3049,8 @@ REVOKE ALL ON accounts FROM PUBLIC; Also, these default privilege settings can be overridden using the command. --> -《マッチ度[90.687161]》PostgreSQLはあるタイプのオブジェクトが作成された時に、そのオブジェクトに対する権限をデフォルトでPUBLICに付与します。 -テーブル、テーブルの列、シーケンス、外部データラッパー、外部サーバ、ラージオブジェクト、スキーマ、テーブル空間に対しては、デフォルトではPUBLICに権限を付与しません。 +PostgreSQLはあるタイプのオブジェクトが作成された時に、そのオブジェクトに対する権限をデフォルトでPUBLICに付与します。 +テーブル、テーブルの列、シーケンス、外部データラッパー、外部サーバ、ラージオブジェクト、スキーマ、テーブル空間、構成パラメータに対しては、デフォルトではPUBLICに権限を付与しません。 他のタイプのオブジェクトに対しては、PUBLICにデフォルトで付与される権限は次のものです。 CONNECTTEMPORARY (データベース内で一時テーブルを作成する権限)、関数とプロシージャに対するEXECUTE権限、言語とデータ型(ドメインを含む)に対するUSAGE権限。 もちろんオブジェクトの所有者は、デフォルト、あるいは明示的に与えられた権限をREVOKEできます。 @@ -4654,9 +4654,10 @@ SELECT 3 OPERATOR(pg_catalog.+) 4; users to make use of the objects in a schema, additional privileges might need to be granted, as appropriate for the object. --> -《マッチ度[73.846154]》ユーザは、デフォルトでは所有していないスキーマのオブジェクトをアクセスすることはできません。 -アクセスするためには、そのスキーマの所有者からスキーマのUSAGE権限を付与してもらわなければなりません。 -そのスキーマ内のオブジェクトに対して操作を行うには、そのオブジェクトに応じて、さらに追加の権限が必要となる場合があります。 +ユーザは、デフォルトでは所有していないスキーマのオブジェクトをアクセスすることはできません。 +アクセスを許可するには、そのスキーマの所有者がスキーマのUSAGE権限を付与しなければなりません。 +デフォルトでは、誰でもpublicにその権限を所有しています。 +ユーザにそのスキーマ内のオブジェクトの利用を許可するには、そのオブジェクトに応じて、さらに追加の権限が必要となる場合があります。 @@ -4669,9 +4670,9 @@ SELECT 3 OPERATOR(pg_catalog.+) 4; Some usage patterns call for revoking that privilege: --> -《機械翻訳》ユーザは、他のユーザのスキーマでオブジェクトを作成することを許可することもできます。 +ユーザが、他のユーザのスキーマ内でオブジェクトを作成することを許可することもできます。 これを許可するには、スキーマに対するCREATE権限を付与する必要があります。 -PostgreSQL14以前からアップグレードされたデータベースでは、誰もがスキーマに対する権限publicを持っています。 +PostgreSQL 14以前からアップグレードされたデータベースでは、誰もがpublicスキーマに対するその権限を持っています。 一部の使用パターンでは、その権限を取り消す必要があります: REVOKE CREATE ON SCHEMA public FROM PUBLIC; @@ -4798,14 +4799,13 @@ REVOKE CREATE ON SCHEMA public FROM PUBLIC; the CREATEROLE privilege, in which case no secure schema usage pattern exists. --> -《機械翻訳》通常のユーザをユーザプライベートスキーマに制限します。 +通常のユーザをユーザプライベートスキーマに制限します。 これを実装するには、まずREVOKE CREATE ON SCHEMA public FROM PUBLICを発行します。 次に、一時的でないオブジェクトを作成する必要があるすべてのユーザに対して、そのユーザと同じ名前のスキーマを作成します。 -デフォルトの検索パスはで始まり、ユーザ名に解決されることを思い出してください。 +デフォルトの検索パスは、ユーザ名に置き換えられる$userで始まることを思い出してください。 したがって、各ユーザが別のスキーマを持っている場合、ユーザはデフォルトで自身のスキーマにアクセスします。 -信頼できないユーザがすでにログインしているデータベースでこのパターンを採用した後、スキーマpg_catalog内のオブジェクトのような名前のオブジェクトのパブリックスキーマを監査することを検討してください。 -信頼できないユーザがデータベースの所有者であるかCREATEROLE権限を持っていない限り、このパターンはセキュアなスキーマ使用パターンです。 -この場合、セキュアなスキーマ使用パターンは存在しません。 +信頼できないユーザがすでにログインしているデータベースでこのパターンを採用した後は、パブリックスキーマ内で、pg_catalogスキーマ内のオブジェクトに似た名前のオブジェクトを監査することを検討してください。 +信頼できないユーザがデータベースの所有者であるかCREATEROLE権限を持っていない限り(この場合、セキュアなスキーマ使用パターンは存在しません)、このパターンはセキュアなスキーマ使用パターンです。 -《機械翻訳》データベースがPostgreSQL14以前からのアップグレードで作成された場合、REVOKEは必須です。 +データベースがPostgreSQL 14以前からのアップグレードで作成された場合、REVOKEは必須です。 そうでない場合、デフォルトの設定はこのパターンに従います。 特権ユーザがスキーマを提供するまで、一般ユーザは一時オブジェクトしか作成できません。 @@ -4836,8 +4836,9 @@ REVOKE CREATE ON SCHEMA public FROM PUBLIC; pattern, this is secure unless an untrusted user is the database owner or holds the CREATEROLE privilege. --> -《マッチ度[82.949932]》postgresql.confを変更、あるいはALTER ROLE ALL SET search_path = ""を実行することにより、デフォルトサーチパスからpublicスキーマを削除します。 -全員がパブリックスキーマに引き続きオブジェクトを作ることができますが、オブジェクトの選択は修飾名によってのみ行われます。 +postgresql.confを変更、あるいはALTER ROLE ALL SET search_path = ""を実行することにより、デフォルトサーチパスからpublicスキーマを削除します。 +それから、publicスキーマ内での作成権限を与えます。 +オブジェクトの選択はpublicスキーマ修飾によってのみ行われます。 修飾されたテーブル名による参照は問題ありませんが、パブリックスキーマ内の関数呼び出しは安全ではないか、あるいは信頼性がありません。 パブリックスキーマ内に関数や拡張を作る場合は、最初のパターンを代わりに使ってください。 それ以外では、最初のパターン同様、信頼できないユーザがデータベース所有者である場合や、CREATEROLE権限を持っている場合を除き、これはセキュアです。 @@ -4856,11 +4857,12 @@ REVOKE CREATE ON SCHEMA public FROM PUBLIC; from PostgreSQL 14 or earlier, this is the default. --> -《マッチ度[59.959350]》デフォルトを維持します。 +デフォルトサーチパスを維持し、publicスキーマ内の作成権限を与えます。 すべてのユーザがpublicスキーマに暗黙的にアクセスします。 これはスキーマを考慮しない世界からのスムースな移行を可能にしながら、スキーマがまったく利用できない状況をシミュレートします。 しかし、これは決してセキュアなパターンではありません。 このパターンは、データベースに一人、あるいは少数のお互いに信頼できるユーザだけが存在する場合にのみ受け入れ可能です。 +PostgreSQL 14以前のデータベースをアップグレードした場合はこれがデフォルトです。 @@ -6235,7 +6237,7 @@ ALTER INDEX measurement_city_id_logdate_key partitions; therefore, the partition structure itself must guarantee that there are not duplicates in different partitions. --> -《機械翻訳》パーティション表に一意性制約または主キー制約を作成するには、パーティション・キーに式またはファンクション・コールが含まれないようにし、制約の列にすべてのパーティション・キー列が含まれている必要があります。 +パーティション化テーブルに一意性制約または主キー制約を作成するには、パーティションキーに式または関数呼び出しが含まれないようにし、制約の列にすべてのパーティションキー列が含まれている必要があります。 この制限が存在するのは、制約を構成する個々の索引が、独自のパーティション内でのみ一意性を直接強制できるためです。 したがって、パーティション構造自体が異なるパーティションに重複がないことを保証する必要があります。 From e741dba8e5bb784b3dcd1bb5aa7753924b5b79b0 Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Sun, 26 Mar 2023 12:55:20 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=89=E8=97=A4=E3=81=95=E3=82=93?= =?UTF-8?q?=E3=81=AE=E6=8C=87=E6=91=98=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/src/sgml/ddl.sgml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 372c5288a04..ed83f305feb 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1110,7 +1110,7 @@ CREATE TABLE products ( To define a unique constraint for a group of columns, write it as a table constraint with the column names separated by commas: --> -列の集合に対して一意性制約を定義するには、列名をカンマで区切り、表制約として記述します。 +列の集合に対して一意性制約を定義するには、列名をカンマで区切り、テーブル制約として記述します。 CREATE TABLE example ( a integer, @@ -1707,7 +1707,7 @@ CREATE TABLE posts ( the column tenant_id to null, but that column is still required as part of the primary key. --> -カラムが指定されていない場合、外部キーもtenant_id列をnullに設定しますが、このカラムは主キーの一部として必要です。 +列が指定されていない場合、外部キーもtenant_id列をnullに設定しますが、この列は主キーの一部として必要です。 @@ -5265,7 +5265,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); このためには、新しい子テーブルは親テーブルと同じ名前の列を持ち、その列の型は同じデータ型でなければなりません。 また、親テーブルと同じ名前、同じ式の検査制約を持っていなければなりません。 ALTER TABLENO INHERIT形式を使用して、同様に継承関係を子テーブルから取り除くことも可能です。 -このような継承関係の動的追加、動的削除は、継承関係をテーブル分割(を参照)に使用している場合に有用です。 +このような継承関係の動的追加、動的削除は、継承関係をテーブルパーティショニング(を参照)に使用している場合に有用です。 From 9caffb5a34297cb98f2d48e106176c8693cdca6d Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Mon, 27 Mar 2023 17:43:54 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=89=E8=97=A4=E3=81=95=E3=82=93?= =?UTF-8?q?=E3=81=8B=E3=82=89=E3=81=AE=E5=86=8D=E5=BA=A6=E3=81=AE=E6=8C=87?= =?UTF-8?q?=E6=91=98=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/src/sgml/ddl.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index ed83f305feb..841e194f1d5 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1175,7 +1175,7 @@ CREATE TABLE products ( columns. This behavior can be changed by adding the clause NULLS NOT DISTINCT, like --> -一般的には、制約に含まれるすべての列の値が等しい複数の行が表の中にある場合に、一意性制約に違反します。 +一般的には、制約に含まれるすべての列の値が等しい複数の行がテーブルの中にある場合に、一意性制約に違反します。 この比較において、デフォルトでは2つのNULL値は等しくないとみなされます。 つまり、一意性制約が存在する場合でも、制約が適用される列の少なくとも1つにNULL値を含むような重複行が格納できるということです。 この動作は、次のようにNULLS NOT DISTINCT句を追加することで変更できます。