
BG Development · За реклама · За контакти |
![]() ![]() ![]() ![]() ![]() |
Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
goro |
Публикувано на: 25-02-2025, 11:00
|
Име: Група: Потребител Ранг: Активен Мнения: 171 Регистриран на: 31.05.09 ![]() |
Един приятел ме подкокуроса и последните 3-4 месеца седнах да пиша един online calendar най-общо казано. Не защото няма такива премного, а заради някои специфични особености на професията му и на мене си.
Съдържа project manager, task manager и конттактна книга. Ползователят може да да настрои различни параметри (изглед , страничен панел и пр. глупости) и да създаде повече от един project manager, task manager или конттактна книга Съхранявам настройките в една таблица (и се свързвам с нея само веднъж - при логването) След логването настройките оствават в една бисквитка. Не съм решил как ще се съхраняват наименованията(със или без ID) на допълнителните project manager, task manager и конттактна книга ако ползователят реши да създаде такива. Предпомагам, че няма да са толкова много. Чудя се: Как би било по добре и ефективно да съхранявам наименованията? 1. в текстов файл (js масив без значение формата) 2. в отделна таблица на базата данни или 3. нито в едното нито в другото. В таблицити на съответните project manager, task manager те така или иначе трябва да са записани. Клоня към първия вариант При него данните се зареждат веднъж - при логването на ползователя. Показването на бутони/линкове към различните книги е лесно и бързо. В другите два случая всеки път би следвало да се прави запитване до базите данни за да се покажат бутоните към различните project manager, task manager и пр... Но е възможно да има някакви подводни камъни които не виждам. |
thrawn |
Публикувано на: 25-02-2025, 11:07
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3730 Регистриран на: 17.01.17 ![]() |
Обектите за които говориш, са част от модела (данните) с които работи приложението. С други думи, мястото им е там където приложението съхранява данните си (в базата данни).
|
goro |
Публикувано на: 25-02-2025, 11:40
|
||
Име: Група: Потребител Ранг: Активен Мнения: 171 Регистриран на: 31.05.09 ![]() |
Благодаря за бързата реакция. Значи... В съответните бази данни те така или иначе се съхраняват - съществува съответната колона която указва кой запис към коя контактна книга се отнася примерно. Но аз искам лесно да превключвам - между различните контактни книги - като на картинката. Затова си мисля, че Контакти 1, 2, 3 и прочие е добре да ги имам отделно някъде и най-простото което ми идва наум е текстов файл. п.п. Бих могъл разбира се да ги вземам всеки път от базата данни, но това според мен е повече работа сървъра отколкото да ги имам в един текстов файл, който изчитам само веднъж - при зареждането. Просто не знам дали е добър вариант. Прикачена картинка (Кликнете на картинката, за да я увеличите!) ![]() |
||
thrawn |
Публикувано на: 25-02-2025, 11:57
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3730 Регистриран на: 17.01.17 ![]() |
Какво ти пречи да ги прочетеш веднъж от базата данни и да си ги съхраняват в паметта? Това се нарича кеширане. Но трябва да съобразиш, че кешът трябва да се актуализира при промяна на съответните данни.
|
goro |
Публикувано на: 25-02-2025, 12:11
|
Име: Група: Потребител Ранг: Активен Мнения: 171 Регистриран на: 31.05.09 ![]() |
Не пречи.
Но ми се струва, че най-простия и с най-малко работа на сървъра вариант е да имам един файл Примерно: ползвовател.js със следното съдържание ['контакти 1','к 2','к 3'...] ['задачи 1','з 2','з 3'...] ['проекти 1','п 2','п 3'...] ползвовател.js се презаписва само когато ползвователя реши да добави нова контактна книга / календар и пр. което едва ли ще е толкова често. Не знам обаче дали едно такова решение не крие някакви други подводни камъни дето не ги виждам за момента. |
thrawn |
Публикувано на: 25-02-2025, 12:50
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3730 Регистриран на: 17.01.17 ![]() |
Така губиш основните ключове които ти гарантират цялостта на данните в базата данни.
|
goro |
Публикувано на: 25-02-2025, 14:28
|
Име: Група: Потребител Ранг: Активен Мнения: 171 Регистриран на: 31.05.09 ![]() |
Не виждам нещо да губя
или просто не разбирам. Де факто, файла е предварително кеширане на наименованията. Примерно. Имам една таблица с контакти които могат да се класифицират като 'контакти 1','контакти 2','к 3'и т.н., съответно колкото си искам различни контактни книги. В таблицата, всеки контакт се записва/класифицира с някой индекс на масива: 0,1,2... или директно с някоя от стойностите 'контакти 1','контакти 2','к 3' В първия случай би възникнал проблем ако се изтрие някоя от наименованията (ключовете ще се пренаредят), но това се решава лесно - сменям типа с {"0":"контакти 0", "1":"контакти 1"...,, "15":"контакти 15"} Във втория случай такъв проблем няма. Съответната таблица ще е просто малко по голяма - вместо запис "0" ще има "контакти 0" Недостатъка, който аз виждам е, че файла ползвовател.js където смятам да съхранявам наименованията е общодостъпен, въпреки че наименованието ще е уникално за всеки акаунт. Т.е. ако някой знае наименованието на файла ми може да види как си кръщавам контактните книги, календарите и пр... до които по същество няма достъп. Е и? (Бих могъл да сменя ползвовател.js с ползвовател.php но не виждам смисъл в толкова скришност) А наименованията ми са нужни за самото сърфиране из приложението (бутони, линкове, форми) и най-просто ми се вижда да ги имам отделно. Греша ли? Благодаря. (Ако също не виждаш други проблеми - може да съм на прав път) |
thrawn |
Публикувано на: 26-02-2025, 07:44
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3730 Регистриран на: 17.01.17 ![]() |
Цялост на данните, означава, че данните са пълни (няма изчезнали данни и всичко е логически свързано). Една от основните задачи при проектирането на базата данни е именно да се гарантира цялостта на данните които се съхраняват в нея.
В случая ти говориш за 3 основни групи от данни специфични за всеки потребител. След като махнеш дефиницията на тези три типа данни от базата данни, то няма какво да ти гарантира, че ключовете с които ги асоциираш в нея са правилни (както сам си открил, в случай на изтриване). Проблемът обаче не е само с триенето. Имаш и редактиране. Това значи, че губиш основните ключове гарантиращи цялостта на данните. С други думи, решението ти е много неподходящо защото води до лош дизайн на базата данни. Да не говорим, че не дава никакви реални ползи. |
![]() |
![]() ![]() ![]() |