= Верзија 4 == Дијаграм [[Image(ERModel_v04.png, 1200px)]] == Податочни побарувања === Ентитети * **Businesses** - Ентитет кој содржи листа од бизниси и информациите во врска со нив. * ''Кандидат клучеви:'' * business_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Businesses, нумерички, not null (задолжителен), serial * ''Атрибути:'' * business_phone - текстуален, максумум 150 знаци * business_hours - текстуален, максумум 150 знаци * business_name - текстуален, максумум 150 знаци, задолжителен * business_description - текстуален, максумум 500 знаци * business_avg_stars - изведен атрибут, нумерички, помеѓу 1 и 5 * **Addresses** - Ентитет кој содржи листа од адреси на бизнисите. * ''Кандидат клучеви:'' * address_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Addresses, нумерички, not null (задолжителен), serial * ''Атрибути:'' * address_street - текстуален, максумум 150 знаци * address_postal_code - текстуален, максумум 150 знаци * address_city - текстуален, максумум 150 знаци * **Services** - Ентитет кој содржи листа од сервиси кои ги нудат бизнисите. * ''Кандидат клучеви:'' * service_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Services, нумерички, not null (задолжителен), serial * ''Атрибути:'' * service_name - текстуален, максумум 150 знаци, задолжителен * **Categories **- Ентитет кој содржи категории во кои спаѓаат бизнисите. * ''Кандидат клучеви:'' * category_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Categories, нумерички, not null (задолжителен), serial * ''Атрибути:'' * category_name - текстуален, максумум 150 знаци, задолжителен * **Reviews** - Ентитет кој ги содржи ревјуата оставени од корисниците. * ''Кандидат клучеви:'' * review_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Reviews, нумерички, not null (задолжителен), serial * ''Атрибути:'' * review_text - текстуален, максумум 500 знаци, задолжителен * review_title - текстуален, максумум 150 знаци, задолжителен * review_stars - нумерички, помеѓу 1 и 5, задолжителен * review_timestamp - timestamp, задолжителен * **Reviewers** - Ентитет кои ги содржи посетителите на апликацијата кои можат да се логираат и да остават reviews * ''Кандидат клучеви:'' * reviewer_id - PRIMARY KEY, вештачки број, уникатен за еднозначно разликување записи од Reviewers, нумерички, not null (задолжителен), serial * ''Атрибути'' * reviewer_email - текстуален, максумум 150 знаци, задолжителен * reviewer_name - текстуален, максумум 150 знаци, задолжителен * reviewer_password - текстуален, максумум 150 знаци, задолжителен * reviewer_verified - булеан, задолжителен === Релации * ** belongs_to** - релација која ги поврзува ентитетите Businesses и Categories која покажува кој бизнис припаѓа на која категорија. Бизнисот мора да припаѓа на точно една категорија, а категоријата може да припаѓа на еден или повеќе бизниси. * **offers_services** - релација која ги поврзува Businesses и Services која покажува кои сервиси ги нуди одреден бизнис. Бизнисот мора да нуди еден или повеќе сервиси, а сервисот може да биде понуден од еден или повеќе бизниси. * **of** - релација која ги поврзува Services и Categories, која покажува кој сервис е од која категорија. Сервисот мора да припаѓа на точно една категорија, а под категоријата може да спаѓаат еден или повеќе сервиси. * **left** - релација која ги поврзува Reviews и Reviewers, која покажува кој ревју е оставен од кој ревјуер. Review мора да е оставено од точно еден reviewer, а тој reviewer може да оставил еден или повеќе reviews. * **about** - релација која ги поврзува Business и Review, која покажува кои ревјуа се оставени за кој бизнис. Бизнисот може да има еден или повеќе reviews за него, а review мора да биде за точно еден бизнис. * **has_address** - релација која ги поврзува Business и Addresses, која покажува кој бизнис е на која адреса. Бизнисот мора да биде на барем една адреса, а адресата мора да биде за точно еден бизнис. * **is_for_address** - релација која ги поврзува Addresses и Reviews, која покажува кој ревју се однесува за која адреса на даден бизнис. Едно ревју може да се однесува на една адреса од бизнисот, а за една адреса може да се оставени повеќе ревјуа. == Историјат: * [wiki:ERDiagram_v01 Прва верзија]: креирани сите ентитети со сите нивни атрибути и меѓусебни релации. * [wiki:ERDiagram_v02 Втора верзија]: променети 1-N релации кај Categories и Reviewer без тотално учество од страната кај 1. Додаден атрибут timestamp во ентитетот Reviews. * [wiki:ERDiagram_v03 Трета верзија]: додаден наслов кај Reviews, како и ентитет Addresses кои припаѓаат на бизнисите. Ревјуата ќе се однесуваат на одреден бизнис кој е на одредена адреса. * [wiki:ERDiagram_v04 Четврта верзија]: додаден слаб ентитет Addresses, кој е во релација со Businesses и Reviews за овозможување ист бизнис на повеќе адреси како и ревју кој се однесува за биснис на одредена локација. Додаден review_title атрибут во ентитетот Reviews. Додаден булеан атрибут reviewer_verified во ентитетот Reviewers, кој укажува на тоа дали дадениот ревјуер е верификуван.