{"id":16634856,"url":"https://github.com/amir78729/database-project-1","last_synced_at":"2026-04-25T23:32:53.378Z","repository":{"id":115877600,"uuid":"282150412","full_name":"amir78729/database-project-1","owner":"amir78729","description":"first project of database course","archived":false,"fork":false,"pushed_at":"2020-07-24T07:42:14.000Z","size":955,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-01-18T10:11:32.791Z","etag":null,"topics":["database","mysql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amir78729.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-24T07:16:31.000Z","updated_at":"2023-05-21T21:41:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"557b160e-e54e-4b7b-9a45-c93d8e2b503e","html_url":"https://github.com/amir78729/database-project-1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amir78729%2Fdatabase-project-1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amir78729%2Fdatabase-project-1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amir78729%2Fdatabase-project-1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amir78729%2Fdatabase-project-1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amir78729","download_url":"https://codeload.github.com/amir78729/database-project-1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243131022,"owners_count":20241176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","mysql"],"created_at":"2024-10-12T05:48:35.287Z","updated_at":"2026-04-25T23:32:48.332Z","avatar_url":"https://github.com/amir78729.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# database-project-1\nfirst project of database course\n\n### Creating Tables ###\n\n\u003e در جدول کاربر برای نام، نام خانوادگی و شماره ملی محدودیت عدم امکان پوچ بودن را در نظر میگیریم. همچنین کلید اصلی این جدول شماره ملی میباشد. زیرا هیچ دو نفری وجود ندارند که شماره ملی یکسان داشته باشند.\n\n```sql\ncreate table User(\nfirstName varchar(20) NOT NULL,\nlastName varchar(20) NOT NULL,\nid varchar(10) NOT NULL,\nphone varchar(10),\ncity varchar(20),\naddress varchar(255),\nCONSTRAINT PK_User PRIMARY KEY (id)\n);\n```\n\n\u003e در جدول تولید کنندگان نیز برای نام، نام خانوادگی و شماره ملی محدودیت عدم امکان پوچ بودن را در نظر میگیریم. همچنین کلید اصلی این جدول شماره ملی میباشد. زیرا همانند کاربر ها هیچ دو نفری وجود ندارند که شماره ملی یکسان داشته باشند.\n\n```sql\ncreate table Producer(\nid varchar(10) NOT NULL,\nfirstName varchar(20) NOT NULL,\nlastName varchar(20) NOT NULL,\nphone varchar(10),\nCONSTRAINT PK_Producer PRIMARY KEY\n(id)\n);\n```\n\n\u003e در جدول کالاها آیدی و نام کالا عدم امکان پوچ بودن هستند و کلید اصلی آن را آیدی کالا تعریف میکنیم تا هیچ دو کالایی آیدی یکسان نداشته باشند. از آنجایی که میخواهیم اطلاعات داخل ستون تولید کننده همان اطلاعات موجود در جدول تولیدکنندگان باشد، آن را کلید خارجی جدول کالاها قرار داده و آن را به شماره ملی تولید کنندگان ارجاع میدهیم.\n\n```sql\ncreate table Product(\nid varchar(10) NOT NULL,\nPName varchar(20) NOT NULL,\ncurrentBalance int default 0,\nsalesPrice int,\npurchasedPrice int,\nproducer varchar(10),\nCONSTRAINT PK_Product PRIMARY KEY (id),\nCONSTRAINT FK_ProductProducer FOREIGN KEY (producer) REFERENCES Producer(id)\n);\n```\n\n\u003e برای جدول فاکتور ها  آیدی و خریدار عدم امکان پوچ بودن هستند و کلید اصلی آن را آیدی کالا تعریف میکنیم تا هیچ دو فاکتوری آیدی یکسان نداشته باشند. از آنجایی که میخواهیم اطلاعات داخل ستون خریدار همان اطلاعات موجود در جدول کاربران باشد، آن را کلید خارجی جدول فاکتور ها قرار داده و آن را به شماره ملی کاربران ارجاع میدهیم.\n\n```sql\ncreate table Factor(\nid varchar(10) NOT NULL,\nbuyer varchar(10) NOT NULL,\nregistrationDate date,\nCONSTRAINT PK_Product PRIMARY KEY (id),\nCONSTRAINT FK_FactorBuyer FOREIGN KEY (buyer) REFERENCES User(id)\n);\n\n```\n\n\u003e در این جدول فاکتور و کالا عدم امکان پوچ بودن هستند و در مورد امتیاز چک میکنیم که از ۵ بیشتر نباشد. کلید اصلی این جدول زوج مرتب (فاکتور ، کالا) بوده و کلید های خارجی آن فاکتور و کالا هستند که به ترتیب به آیدی جدول فاکتور ها و آیدی جدول کالاها ارجاع داده میشوند.\n\n```sql\nproduct varchar(10) NOT NULL,\nnumber int default 0,\nrate int check (rate \u003c= 5),\nCONSTRAINT PK_Product PRIMARY KEY (factor, product),\nCONSTRAINT FK_factor FOREIGN KEY (factor) REFERENCES Factor(id),\nCONSTRAINT FK_product FOREIGN KEY (product) REFERENCES Product(id)\n);\n```\n\u003chr\u003e\n\n### Input Data ###\nورودی های داده شده در خود فایل گزارش قابل مشاهده هستند.\n\u003chr\u003e\n\n### Quories ###\n\n\u003e کاربران تهرانی\n\n```sql\nSELECT * FROM user WHERE city = 'Tehran';\n```\n\u003e کسانی که شماره تلفن ؟؟؟؟؟؟؟۹۱۲ دارند\n\n```sql\nSELECT * FROM user WHERE phone LIKE '912%';\n```\n\u003e کالا با تولید کننده با شماره ملی ۱۲۳۴۵۶۷۸۹۰\n\n```sql\nSELECT pname, producer\nFROM product, producer\nWHERE producer.id = product.producer\n\tand producer.id = '1234567890';\n\n```\n\u003e کالا با میانگین(وزن دار) بین ۳ و ۴\n\n```sql\nSelect product,(Sum(number*rate)/sum(number)) as 'rate average'\nfrom product_factor\ngroup by product\nhaving (Sum(number*rate)/sum(number)) between 3 and 4;\n\n```\n\u003e افزایش قیمت و نمایش به ترتیب\n\n```sql\nupdate product \nset salesPrice = salesPrice * 1.1;\n\nselect * \nfrom product\norder by salesPrice ;\n\n```\n\u003e کالا با تولید کننده ۳۳۳۳۳۳۳۳۳۳ با میانگین وزندار بالای ۳\n\n```sql\nselect pname , sum(rate*number)/sum(number) as 'rate_average '\nfrom product_factor, product\nwhere product.id = product_factor.product\n\tand producer='3333333333' \ngroup by product\nhaving sum(rate*number)/sum(number)\u003e3;\n\n```\n\u003e فاکتوری ک توسط کاربر با کد ملی ۱۱۲۲۳۳۴۴۵۵۶۶ خریده شده\n\n```sql\nSELECT * FROM factor WHERE buyer = '1122334455';\n```\n\u003e تولید ﮐﻨﻨﺪﮔﺎﻧﯽ ﮐﻪ ﮐﺎﻻﻫﺎي آﻧﻬﺎ ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﺑﺎ ﺷﻤﺎره ﮐﺪ ﻣﻠﯽ 5544332211 ﺧﺮﯾﺪاری ﺷﺪه\n\n```sql\nSELECT DISTINCT producer.id, producer.firstName, producer.lastName\nFROM producer, product, product_factor, factor, user \nWHERE producer.id = product.producer\n\tand product.id = product_factor.product\n\tand product_factor.factor = factor.id\n\tand factor.buyer = '1122334455';\n\n```\n\u003e کالاهایی که بعد از ۱/۱/۲۰۲۰ خریداری شده اند\n\n```sql\nSELECT DISTINCT product\nFROM factor natural join product_factor\nWHERE factor.registrationDate \u003e '20200101';\n\n```\n\u003e کالا های با سود فروش بیش از سی درصد\n\n```sql\nSELECT id, pname, (100 - purchasedPrice / salesPrice * 100) as 'profit \u003e 30%'\nFROM product\nWHERE  (100 - purchasedPrice / salesPrice * 100) \u003e 30;\n\n```\n\u003e کسانی که تا الان کالای p1 که چای است را خریداری کرده اند\n\n```sql\nselect distinct factor.buyer\nfrom product_factor \njoin factor on product_factor.factor = factor.id\nwhere product_factor.product = 'p1';\n\n```\n\u003e کالاهایی با امتیاز بیشتز ار میانگین کل\n\n```sql\nselect product , sum(rate*number)/sum(number) as 'rate average \u003e total average'\nfrom  product_factor \ngroup by product \nhaving sum(rate*number)/sum(number)\u003e(select sum(number*rate)/sum(number) from product_factor);\n\n``` \n\u003e بیشترین میانگین کالا\n\n```sql\nselect product , sum(rate*number)/sum(number) as 'max average'\nfrom product_factor  \ngroup by product \nhaving sum(rate*number)/sum(number) \u003e= all(select sum(rate*number)/sum(number) from product_factor group by product );\n\n```\n\u003e نمایش کالا ها به ترتیب میزان فروش\n\n```sql\nselect product, sum(number)\nfrom product_factor\ngroup by product\norder by sum(number);\n\n```\n\u003e کسانی که جنس تکراری خریده اند\n\n```sql\nselect user.id, user.firstName, user.lastName, product_factor.product,count(*) as '#'\nfrom user, factor, product_factor\nwhere user.id = buyer\n\tand factor.id = product_factor.factor\ngroup by user.id, product_factor.product\nhaving count(*)\u003e1;\n\n```\n\u003e کالا هایی که چند بار خریداری شده اند\n\n```sql\nselect  product_factor.product, user.id as 'purchased by', count(*) as '#'\nfrom user, factor, product_factor\nwhere user.id = buyer\n\tand factor.id = product_factor.factor\ngroup by product_factor.product, user.id\nhaving count(*)\u003e1;\n\n``` \n\u003e نمایش به ترتیب تعداد کالا های تولید شده ی تولید کنندگان و تعداد کالاهای فروخته شده ی بعد از ۱/۱/۲۰۲۰ آنها\n\n```sql\nselect producer.firstName , producer.lastName, sum(number) as 'total sales'\nfrom producer, product, product_factor, factor\nwhere producer.id = product.producer\n\tand product.id = product_factor.product\n\tand factor.id = product_factor.factor\n\tand factor.registrationDate \u003e '20200101'\ngroup by firstname\norder by sum(number);\n\n```\n\u003e لیست فاکتور ها به ترتیب قیمت کل\n\n```sql\nselect factor.id, sum(product.salesprice * product_factor.number) as 'total price'\nfrom factor, product, product_factor\nwhere factor.id = product_factor.factor\n\tand product.id = product_factor.product\ngroup by factor.id\norder by sum(product.salesprice * product_factor.number);\n\n```\n\u003e کالا ها و سود آنها به ترتیب\n\n```sql\nselect product_factor.factor, sum( number * ( salesprice - purchasedprice ) ) as'shop profit'\nfrom product_factor join product on product_factor.product = product. id\ngroup by factor\norder by  sum( number * ( salesprice - purchasedprice ) );\n\n\n```\n\u003chr\u003e\n\n### Views ###\n\n\u003e ﻧﺎم ﮐﺎﻻ، ﻧﺎم ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪه ﮐﺎﻻ و ﺗﻌﺪاد ﮐﺎرﺑﺮاﻧﯽ ﮐﻪ اﯾﻦ ﮐﺎﻻ را ﺧﺮﯾﺪه اند\n\n```sql\ncreate view product_total_sales as\n(select product.pname, producer.firstname, producer.lastname,count(distinct(factor.buyer)) as '#' \nfrom product, factor, product_factor, producer\nwhere product.id = product_factor.product\n\tand factor.id = product_factor.factor\n\tand producer.id = product.producer\ngroup by product)\nunion\n(select product.pname, producer.firstname, producer.lastname,0 as '#' \nfrom product join producer on product.producer = producer.id\nwhere product.id \u003c\u003e all(select product from product_factor));\n\n\n```\n\u003e ﻧﺎم ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪه ﻫﺎﯾﯽ ﮐﻪ ﺑﯿﺶ از ﯾﮏ ﮐﺎﻻ ﺗﻮﻟﯿﺪ ﮐﺮدهاﻧﺪ ﺑﻪ ﻫﻤﺮاه ﮐﺪﻣﻠﯽ ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪه\n\n```sql\ncreate view producers_with_more_than_one_product as\nselect producer.firstname, producer.lastname, producer.id, count(product.id) as 'number'\nfrom producer join product on producer.id = product.producer\ngroup by firstname\nhaving count(product.id) \u003e 1;\n\n```\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famir78729%2Fdatabase-project-1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famir78729%2Fdatabase-project-1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famir78729%2Fdatabase-project-1/lists"}