タグ付けされた質問 「sql」

構造化照会言語(SQL)は、リレーショナルデータベース管理システムでデータを管理するための言語です。このタグは、SQLプログラミングに関する一般的な質問用です。Microsoft SQL Server(これには、sql-serverタグを使用します)用ではなく、SQLの特定の方言だけを参照することもありません。

4
多くのデザインがRDBMSの正規化を無視するのはなぜですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 意思決定段階では、正規化が最初の考慮事項ではないという多くの設計を見ました。 多くの場合、これらの設計には30を超える列が含まれており、主なアプローチは「すべてを同じ場所に置く」ことでした 私が覚えていることによると、正規化は最初の最も重要なことの1つです。 編集: 優秀なアーキテクトや専門家が非正規化されたデザインを選択し、未経験の開発者が反対を選択するというのは本当ですか?正規化を念頭に置いて設計を開始することに対する議論は何ですか?

2
SQL IN()対OR
私は今日書いたクエリをWHERE使っていました item_desc = 'item 1' OR item_desc = 'item 2' OR item_desc = 'item 3' OR item_desc = 'item 4' 上記は15分間実行され、何も返されませんでしたが、次の結果は1.5分で結果セットが得られました item_desc IN ( 'item 1' ,'item 2' ,'item 3' ,'item 4' ) これをSQLで実行しましたが、なぜOR(アイテムのリスト)がORステートメントよりもはるかに高速に実行されるのか疑問に思っています。 -編集-SQL Server 2008、この情報を最初から入力していないことをおforびします。 以下は、ORステートメントを使用したクエリ全体です。 DECLARE @SD DATETIME DECLARE @ED DATETIME SET @SD = '2013-06-01'; SET @ED …
23 sql  speed 

11
同僚が96列のSQLテーブルを作成しました
私たちは2010年に、4年または5年以上の経験を持つソフトウェアエンジニアであり、96のフラッキングカラムを持つテーブルを設計しています。 私は彼にそれが悪夢になると言った。 MySQLをC#とインターフェイスするには序数を使用する必要があることを彼に示しました。 行よりも列の方が多い表は大きな臭いだと説明しました。 それでも、「この方法でもっと簡単になるだろう」というメッセージが表示されます。 私は何をすべきか? 編集* このテーブルには、センサーからのデータが含まれます。 Dynamic_D1X Dynamic_D1Y を備えたセンサー1があります [...] Dynamic_D6X Dynamic_D6Y [...] EDIT2 * さて、私はついにその仕事を辞めました。それは、他のプログラマーが何ヶ月も暗くなったときの兆候であり、管理者がこれが問題であることを認識していないときの別の兆候です
23 sql  code-smell 

4
パラメータ化されていないクエリにエラーを返させないのはなぜですか?
SQLインジェクションは非常に深刻なセキュリティの問題です。その大部分は間違いを犯しやすいためです。ユーザー入力を組み込んだクエリを作成するための明確で直感的な方法では脆弱性が残り、それを緩和する正しい方法ではパラメーター化について知る必要があります最初にクエリとSQLインジェクション。 これを修正する明白な方法は、明白な(しかし間違った)オプションをシャットダウンすることだと思われます:パラメータの代わりにハードコードされた値をWHERE句で使用する受信したクエリが素敵で説明的なものを返すようにデータベースエンジンを修正します代わりにパラメータを使用するよう指示するエラーメッセージ。これには、管理ツールからのアドホッククエリなどを簡単に実行できるように、オプトアウトオプションが必要になることは明らかですが、デフォルトで有効にする必要があります。 これを行うと、SQLインジェクションがほぼ一晩中停止しますが、私が知る限り、実際にこれを行うRDBMSはありません。そうでない理由はありますか?
22 security  sql  rdbms 

2
2つのPythonプロセスがアクセスするSQLite:1つの読み取り、1つの書き込み
私は2つのコンポーネントを持つ小さなシステムを開発しています。1つはインターネットリソースからデータをポーリングし、それをsqlデータに変換してローカルに保持します。2番目のものは、ローカルインスタンスからそのsqlデータを読み取り、jsonおよびrestful apiを介して提供します。 私はもともとpostgresqlでデータを永続化することを計画していましたが、アプリケーションには保存するデータとサービスするトラフィックの量が非常に少ないため、やり過ぎだと思いました。SQLiteは仕事をしているのですか?フットプリントが小さく、この1つのタスクのために別のSQLサーバーを維持する必要がないというアイデアが大好きですが、同時実行性が心配です。 先読みロギングを有効にすると、データベースからプロセスをロックアウトせずに、SQLiteデータベースの読み取りと書き込みを同時に行うことができるようです。 1つの読み取りと他の書き込みのみが行われる場合、単一のSQLiteインスタンスは、それにアクセスする2つの並行プロセスを維持できますか?私はコードを書き始めましたが、これがSQLiteの誤用かどうか疑問に思っていました。

2
SQLは宣言的ですか?
私が尋ねるのは、SQLで見られる質問の多くが「これは遅いです。どうすれば高速化できますか」ということです。または、「この方法を使用し、高速ではないので、この方法を使用してください」と記載されているチュートリアルです。 SQLの大部分は、式がどのように実行されるかを知っており、その知識から、より良いパフォーマンスの式スタイルを選択しているように思えます。これは、宣言型プログラミングの1つの側面(システムが計算を生成する対象を指定するだけで計算を実行する最適な方法を決定することを離れる)とは異なります。 SQLエンジンは、を使用inしたexistsかjoinどうかを気にしてはいけませんか、それが本当に宣言型である場合、3つの方法のいずれかによって可能であれば、妥当な時間内に正しい答えを与えるべきではありませんか?この最後の例は、冒頭の段落で言及したタイプのこの最近の投稿によって促されます。 インデックス 私が使用できた最も簡単な例は、テーブルのインデックスの作成に関するものだと思います。gumph w3schools.com上、ここでは、でも、パフォーマンス上の理由であり、ユーザが目に見えない何かとしてそれを説明しようとします。それらの記述は、SQLインデックスを非宣言型のキャンプに入れているようで、純粋にパフォーマンス上の理由で手作業で定期的に追加されています。 彼らはどこか他のすべてよりもはるかに宣言的な理想的なSQL DBですが、それは良い人がそれについて聞いていないためですか?

4
モバイルクライアントとサーバー間の参照整合性の維持
だから私は比較的単純なシステムを持っています。モバイルクライアントは、私が(他のモバイルクライアントと共有されている)は、リモートSQLサーバーに同期しているしたいとSQLiteのデータベースのレコードを作成します。そのため、電話のsqliteテーブルに新しいレコードを作成するとき、その変更をRESTful APIを介してリモートサービスにプッシュします。私が抱えている問題は、データの衝突がないようにプライマリキーをどのように注文するかです(つまり、電話のレコードはサーバー上の完全に異なるレコードと同じプライマリキーを持っています)。クライアント上のレコードを参照し、サーバー上の同じレコードを参照するための通常の「ベストプラクティスは何ですか?」
21 sql  web-services 

9
ストアドプロシージャにビジネスロジックを配置するかどうか。
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 「ビジネスロジックをストアドプロシージャに入れるかどうか」というトピックについては常に議論があります。ORMツールを使用せず、ビジネスロジックをストアドプロシージャに入れないことにした場合、どこにビジネスロジックを入れますか? 以前のアプリケーションでは、すべてのビジネスロジックをストアドプロシージャにのみ配置することを常に好みました。次に、.NETコードから、データアクセスアプリケーションブロックを使用してこれらのストアドプロシージャを呼び出します。SQLHelperなど。しかし、これは常にシナリオになることはできません。だから私はいくつかのグーグルをしましたが、混乱してしまいました....... 何か提案...?
21 c#  .net  sql 

5
LEFT JOINよりRIGHT JOINを好む理由
私が正しく理解していれば、すべてRIGHT JOIN: SELECT Persons.*, Orders.* FROM Orders RIGHT JOIN Persons ON Orders.PersonID = Persons.ID 次のように表現できますLEFT JOIN。 SELECT Persons.*, Orders.* FROM Persons LEFT JOIN Orders ON Persons.ID = Orders.PersonID 私の個人的な意見は、声明の意図は次のとおりです。 最初に Persons 次にPersons、必要に応じてを展開/繰り返して、Orders はPersons LEFT JOIN Orders、逆の順序よりもの順序で表されOrders RIGHT JOIN Personsます(RIGHT JOIN結果として私は決して使用しません)。 RIGHT JOINが望ましい状況はありますか?または、できないRIGHT JOINことを実行できるユースケースはありますLEFT JOINか?

8
カスタムフィールドを持つユーザーデータベースをどのように設計しますか
この質問は、データベースをどのように設計する必要がありますか?それは、より良いソリューションになるものに応じて、リレーショナル/ nosqlデータベースにすることができます 「会社」と「ユーザー」を追跡するデータベースを含むシステムを作成する必要があるという要件があるとします。1人のユーザーは常に1つの会社にのみ属します ユーザーは1つの会社にのみ所属できます 会社は多くのユーザーを持つことができます 「会社」テーブルの設計は非常に簡単です。会社には次の属性/列があります:(簡単にしましょう) ID, COMPANY_NAME, CREATED_ON 最初のシナリオ シンプルでわかりやすい、ユーザーはすべて同じ属性を持っているため、これはリレーショナルスタイルのユーザーテーブルで簡単に実行できます。 ID, COMPANY_ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_ON 2番目のシナリオ さまざまな企業がユーザーのさまざまなプロファイル属性を保存する場合はどうなりますか。各会社には、その会社のすべてのユーザーに適用される定義済みの属性セットがあります。 例えば: 会社Aは、LIKE_MOVIE(ブール値)、LIKE_MUSIC(ブール値)を保管したいと考えています。 会社Bが保存したい:FAV_CUISINE(文字列) 会社Cは、OWN_DOG(ブール値)、DOG_COUNT(整数)を保存したい アプローチ1 ブルートフォースの方法は、ユーザーに単一のスキーマを持たせ、彼らが会社に属していない場合にnullを持たせることです: ID, COMPANY_ID, FIRST_NAME, LAST_NAME, EMAIL, LIKE_MOVIE, LIKE_MUSIC, FAV_CUISINE, OWN_DOG, DOG_COUNT, CREATED_ON 多くのNULLと、それらに関係のない列を持つユーザー行(つまり、会社Aに属するすべてのユーザーはFAV_CUISINE、OWN_DOG、DOG_COUNTのNULL値を持つ)になってしまうため、これはやや厄介です アプローチ2 2番目のアプローチは、「自由形式フィールド」を持つことです。 ID, COMPANY_ID, FIRST_NAME, LAST_NAME, EMAIL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CREATED_ON カスタムフィールドとは何なのかわからないため、それ自体は厄介です。データ型は、格納されている値を反映しません(たとえば、int値をVARCHARとして格納します)。 アプローチ3 …

2
F#は、データベース駆動型のWeb開発に特に役立つものを提供しますか?
私の組織は今年、ついにMS Visual Studio 2010にアップグレードしました。Visual Studio 2010が提供する大きな新機能の1つは、F#プログラミング言語です。 F#は、Lispと同様の関数型プログラミングパラダイムを提供することを理解しています。ただし、Lispとは異なり、F#は.netフレームワークのマネージコードにコンパイルされます。 現在、私はデータベース駆動型のWebアプリケーション開発に取り組んでいます。現在、私はバックエンドでSQLコードを使用し、フロントエンドでC#.net AJAX Webアプリケーションを使用するn層アプリケーションで作業しています。F#がこの種の開発に特に役立つものを提供しているかどうかを知りたいです。

6
複数のデータベース/サーバーを使用したデータとの対話
私がこれまでに対処しなければならなかったプロジェクトはすべて、単一のサーバー上の単一のデータベースのみを必要としました。私は、負荷を管理するために、スケーリングする必要があるプロジェクトが複数のデータベースやサーバーにどのように移動するかについて、もっと知りたいと思っています。私は高いスケーラビリティを知っていますが、私は特にいくつかのコード例や、このテーマについてもっと読むことができる追加のリソースに興味があります。 例えば: 複数のデータベース上の2つのテーブル間で結合はどのように構築されますか?(ここのコード例が役立ちます)。 どのテーブルがどのデータベースにあるかを追跡するための特別な戦略はありますか? アプリケーションコードは、1つ以上のデータベースが複数のサーバーに分散していることを知る必要がありますか?そうでない場合、要求はどのレベルでフィルタリングされますか? 1データベース/ 1サーバーのセットアップを超える時期はいつですか?これを行う必要があるのはどれくらい一般的ですか?
18 php  sql 

4
データベースの抽象化—やり過ぎですか?
多数のデータベース抽象化レイヤーにさらされた後、私は、データにアクセスするための独自の異なるパラダイムを発明するすべてのライブラリーのポイントが何であるか疑問に思い始めています。新しいDALを取得することは、新しい言語をもう一度学習するように感じます。通常、やりたいことは、既に自分の頭に書いたSQLクエリを出力するようにレイヤーを説得することだけです。 そして、それは事後の読みやすさにさえ触れていない: # Exhibit A: A typical DAL rows = db(db.ips_x_users.ip_addr == '127.0.0.1') .inner_join(db.ips_x_users.user_id == db.users.id) .select(order=(db.ips_x_users.last_seen, 'desc'), limit=10) # Exhibit B: Another typical DAL rows = db.ips_x_users .join(db.users, on=db.ips_x_users.user_id == db.users.id) .filter(db.ips_x_users.ip_addr == '127.0.0.1') .select(sort=~db.ips_x_users, limit=10) # Exhibit C: A hypothetical DAL based on standard SQL syntax rows = …
18 database  sql  api-design  dsl 

2
フィルターされた検索を実装する最適な方法
フィルター処理された検索フォームを実装する際のご意見をお聞かせください。次の場合を想像してみましょう。 多数の列を持つ1つの大きなテーブル このSQL Serverを言うことは重要かもしれません このテーブルのデータを検索するフォームを実装する必要があります。このフォームには、この検索を最適化するためのいくつかのチェックボックスがあります。 ここで私の質問は、次のどれが検索を実装するための最良の方法であるべきかということです。 内部にクエリを含むストアドプロシージャを作成します。このストアドプロシージャは、パラメータがアプリケーションによって指定されているかどうかを確認し、指定されていない場合は、ワイルドカードがクエリに挿入されます。 動的クエリを作成します。動的クエリは、アプリケーションによって指定された内容に従って構築されます。 これは、SQL Serverがパフォーマンスを最適化するためにストアドプロシージャの作成時に実行プランを作成することを知っているためですが、ストアドプロシージャ内で動的クエリを作成すると、実行プランによって得られる最適化が犠牲になりますか? あなたの意見で最善のアプローチは何でしょうか教えてください。

7
SQLクエリビルダーを使用する利点は何ですか?
生のSQLを使用するのではなく、クエリビルダを使用する利点はありますか? 例えば $q->select('*') ->from('posts') ->innerJoin('terms', 'post_id') ->where(...) 対: SELECT * FROM posts WHERE ... 多くのフレームワークがこの種の抽象化レイヤーを使用していることがわかりますが、その利点を理解できません。
17 php  sql  frameworks 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.