{"id":11780,"date":"2024-11-28T13:46:45","date_gmt":"2024-11-28T12:46:45","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/640\/?post_type=ht_kb&#038;p=11780"},"modified":"2024-11-28T14:24:00","modified_gmt":"2024-11-28T13:24:00","slug":"__trashed-5","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/","title":{"rendered":"Wprowadzenie: Bazy danych"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Wprowadzenie\" >Wprowadzenie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Grupa_docelowa\" >Grupa docelowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Definicje_pojec\" >Definicje poj\u0119\u0107<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Opis\" >Opis<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Podstawy\" >Podstawy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Zmiany_schematu_bazy_danych\" >Zmiany schematu bazy danych<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Tworzenie_schematu_bazy_danych\" >Tworzenie schematu bazy danych<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Aktywacja_zmian_schematu_bazy_danych\" >Aktywacja zmian schematu bazy danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Przyklad_zmiany_schematu_danych\" >Przyk\u0142ad zmiany schematu danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Zaleznosc_czasowa\" >Zale\u017cno\u015b\u0107 czasowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Referencje_do_obiektow\" >Referencje do obiekt\u00f3w<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#SBLOBs\" >SBLOBs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Przechowywanie_BLOB\" >Przechowywanie BLOB<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Atrybuty_mozliwe_do_zlokalizowania\" >Atrybuty mo\u017cliwe do zlokalizowania<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Mapowanie_typow_danych_systemu_ERP\" >Mapowanie typ\u00f3w danych systemu ERP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Dostep_za_pomoca_SQL\" >Dost\u0119p za pomoc\u0105 SQL<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Zmiany_w_bazie_danych\" >Zmiany w bazie danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Przywracanie_bazy\" >Przywracanie bazy<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Informacje_o_bazie_danych\" >Informacje o bazie danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Ograniczenia_specyficzne_dla_DBMS\" >Ograniczenia specyficzne dla DBMS<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Ograniczenia_Oracle\" >Ograniczenia Oracle<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Ograniczenia_nalozone_przez_serwer_SQL\" >Ograniczenia na\u0142o\u017cone przez serwer SQL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#4113_Ograniczenia_wynikajace_z_DB2400\" >4.11.3 Ograniczenia wynikaj\u0105ce z DB2\/400<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Ograniczenia_wynikajace_z_PostgreSQL\" >Ograniczenia wynikaj\u0105ce z PostgreSQL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Wielkiemale_litery\" >Wielkie\/ma\u0142e litery<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Ograniczenia_specyficzne_dla_jezyka\" >Ograniczenia specyficzne dla j\u0119zyka<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Oracle_SQL_Server_i_DB2400\" >Oracle, SQL Server i DB2\/400<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#PostgreSQL\" >PostgreSQL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Przelaczanie_awaryjne_bazy_danych\" >Prze\u0142\u0105czanie awaryjne bazy danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/__trashed-5\/#Poziom_izolacji_transakcji\" >Poziom izolacji transakcji<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3 id=\"wprowadzenie\" ><span class=\"ez-toc-section\" id=\"Wprowadzenie\"><\/span>Wprowadzenie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>System Comarch ERP Enterprise sk\u0142ada si\u0119 z kilku baz danych. Struktura ka\u017cdej u\u017cywanej bazy danych w Comarch ERP Enterprise jest taka sama.<\/p>\n<h3 id=\"grupa-docelowa\" ><span class=\"ez-toc-section\" id=\"Grupa_docelowa\"><\/span>Grupa docelowa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Administratorzy<\/li>\n<li>Programi\u015bci z zaawansowan\u0105 wiedz\u0105<\/li>\n<\/ul>\n<h3 id=\"definicje-pojec\" ><span class=\"ez-toc-section\" id=\"Definicje_pojec\"><\/span>Definicje poj\u0119\u0107<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Obiekt biznesowy<\/strong> &#8211; model danych Comarch ERP Enterprise opiera si\u0119 na obiektach biznesowych. Zawieraj\u0105 one tylko dane i dlatego s\u0105 r\u00f3wnie\u017c okre\u015blane jako kontenery danych. Przetwarzanie tych danych jest realizowane za pomoc\u0105 logiki aplikacji, kt\u00f3ra przeprowadza transformacje stanu danych. Odpowiednie fragmenty <span style=\"color: #000000;\">rzeczywisto\u015bci <\/span>zosta\u0142y zamodelowane za pomoc\u0105 obiekt\u00f3w biznesowych, uwzgl\u0119dniaj\u0105c w miar\u0119 mo\u017cliwo\u015bci trzeci\u0105 posta\u0107 normaln\u0105, tj. jednostki zosta\u0142y utworzone z jak najmniejsz\u0105 redundancj\u0105, co skutkowa\u0142o du\u017c\u0105 liczb\u0105 obiekt\u00f3w biznesowych. Opis ich struktury jest obiektem deweloperskim. Instancja obiektu biznesowego jest wyra\u017ceniem opisu przechowywanego jako obiekt deweloperski. Persistence service mo\u017ce odczytywa\u0107, zapisywa\u0107 i usuwa\u0107 instancje obiekt\u00f3w biznesowych. Jego opis\u00a0 jest cz\u0119sto dost\u0119pny w znormalizowanej formie. Rzeczywista zmienna biznesowa mo\u017ce by\u0107 opisana przez wi\u0119cej ni\u017c jeden obiekt biznesowy, przy czym tylko jeden z nich zawsze istnieje jako g\u0142\u00f3wny. Z tego powodu obiekty biznesowe s\u0105 grupowane w jednostk\u0119 biznesow\u0105, w kt\u00f3rej jeden specjalnie oznaczony dzia\u0142a jako przedstawiciel grupy. Ten przedstawiciel i jego grupa staj\u0105 si\u0119 jednostk\u0105 biznesow\u0105.<\/p>\n<p><strong>Baza danych<\/strong> &#8211; jest rodzajem schematu bazy danych. Baza danych zawiera dane, kt\u00f3re s\u0105 ustrukturyzowane zgodnie z powi\u0105zanym schematem bazy danych.<\/p>\n<p><strong>Schemat bazy danych<\/strong> &#8211; zawiera informacje strukturalne obiekt\u00f3w, kt\u00f3re mog\u0105 by\u0107 przechowywane w bazie danych.<\/p>\n<p><strong>Opis obiektu<\/strong> &#8211; zawiera metadane do generowania\u00a0 Bussines object, Part lub View.<\/p>\n<p><strong>Part<\/strong> &#8211; s\u0105 kontenerami danych dla danych strukturalnych. Part mo\u017ce by\u0107 u\u017cywana jako z\u0142o\u017cony atrybut w obiekcie biznesowym lub w cz\u0119\u015bci. Part nie mog\u0105 by\u0107 przechowywane bezpo\u015brednio w bazie danych, a jedynie osadzone w obiekcie biznesowym.<\/p>\n<p><strong>Tabela<\/strong> &#8211; obiekt biznesowy jest przechowywany w bazie danych w jednej lub kilku tabelach.<\/p>\n<p><strong>Opis<\/strong> <strong>tabeli<\/strong> &#8211; s\u0142u\u017cy jako szablon dla definicji tabeli i tabeli. Ka\u017cdy obiekt biznesowy ma opis tabeli. Schemat tabeli, w kt\u00f3rej przechowywane s\u0105 instancje obiektu biznesowego, mo\u017ce pochodzi\u0107 z opisu tabeli. Opis tabeli jest generowany na podstawie opisu obiektu.<\/p>\n<p><strong>Definicja tabeli<\/strong> &#8211; opisuje schemat tabeli. Definicja tabeli zawiera niezale\u017cny od bazy danych opis kolumn i indeks\u00f3w tabeli.<\/p>\n<h3 id=\"opis\" ><span class=\"ez-toc-section\" id=\"Opis\"><\/span>Opis<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4 id=\"podstawy\" ><span class=\"ez-toc-section\" id=\"Podstawy\"><\/span>Podstawy<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Baza danych systemu Comarch ERP Enterprise sk\u0142ada si\u0119 z zestawu tabel i widok\u00f3w. Tabela posiada schemat, kt\u00f3ry opisuje jej struktur\u0119 oraz zawarto\u015b\u0107, kt\u00f3ra jest ustrukturyzowana zgodnie ze schematem. Widok ma tylko jeden schemat. Zawarto\u015b\u0107 widoku jest obliczana na podstawie innych tabel. Schemat bazy danych sk\u0142ada si\u0119 ze schemat\u00f3w tabel i widok\u00f3w w niej zawartych.<\/p>\n<p>Ka\u017cda tabela i ka\u017cdy widok znajduje si\u0119 w dok\u0142adnie jednej bazie danych. Ka\u017cda operacja mo\u017ce uzyska\u0107 dost\u0119p tylko do tabel i widok\u00f3w w dok\u0142adnie jednej bazie danych. Ka\u017cda operacja wp\u0142ywa tylko na konkretn\u0105 baz\u0119 danych.<\/p>\n<p><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/03\/image.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20467\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/03\/image.png\" alt=\"\" width=\"577\" height=\"446\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/03\/image.png 577w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/03\/image-300x232.png 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/03\/image-50x39.png 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/03\/image-320x247.png 320w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/a><\/p>\n<p>Ka\u017cda baza danych Comarch ERP Enterprise jest podzielona na kategorie w zale\u017cno\u015bci od jej zawarto\u015bci i przeznaczenia:<\/p>\n<ul>\n<li>Konfiguracja systemu<\/li>\n<li>Repozytorium<\/li>\n<li>OLTP<\/li>\n<li>OLAP<\/li>\n<\/ul>\n<p>Schemat jest identyczny dla wszystkich baz danych o tym samym typie zawarto\u015bci w sp\u00f3jnym systemie Comarch ERP Enterprise (zwanym dalej &#8222;systemem ERP&#8221;).<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Wszystkie bazy OLTP maj\u0105 ten sam schemat. Jednak zawarto\u015b\u0107 baz danych OLTP mo\u017ce by\u0107 r\u00f3\u017cna.<\/p>\n<p>Ka\u017cda tabela i ka\u017cdy widok w bazie danych zosta\u0142y utworzone przez system ERP przy u\u017cyciu obiekt\u00f3w deweloperskich. Dane zapisane w obiektach deweloperskich w pe\u0142ni opisuj\u0105 schemat obiektu bazy danych.<\/div><\/section>\n<h4 id=\"zmiany-schematu-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Zmiany_schematu_bazy_danych\"><\/span>Zmiany schematu bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h5 id=\"tworzenie-schematu-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Tworzenie_schematu_bazy_danych\"><\/span>Tworzenie schematu bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Obiekt biznesowy sk\u0142ada si\u0119 z atrybut\u00f3w, indeks\u00f3w, relacji i innych danych. Typy danych atrybut\u00f3w obiektu biznesowego mog\u0105 sk\u0142ada\u0107 si\u0119 z prostych typ\u00f3w danych, takich jak ci\u0105gi lub liczby, lub z\u0142o\u017conych typ\u00f3w danych, takich jak tablice (o sta\u0142ej d\u0142ugo\u015bci) i cz\u0119\u015bci (Part). Wszystkie te dane s\u0105 podsumowane w opisie obiektu biznesowego.<\/p>\n<p>Opis obiektu jest wersjonowany w repozytorium jako obiekt deweloperski, tzn. je\u015bli opis obiektu jest zawarty w zadaniu deweloperskim, otrzymuje nowy numer wersji.<\/p>\n<table style=\"height: 230px; width: 100%; border-collapse: collapse;\">\n<caption>Przyk\u0142ad opisu obiektu dla Bussines Object <em>Item<\/em><\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\" colspan=\"2\">Opis obiektu <em>Item<\/em><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa atrybutu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">description<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (200)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">size<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Array [3] Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">value<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PartDomesticAmount<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(guid)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(number)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Opis tabeli jest generowany z opisu obiektu w procesie rozwoju za pomoc\u0105 polecenia <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/tworzenie-obiektu-biznesowego-crtbo\/\">crtbo<\/a><\/em>. Opis tabeli sk\u0142ada si\u0119 z atrybut\u00f3w i indeks\u00f3w i s\u0142u\u017cy jako szablon dla schematu bazy danych tabeli. Wszystkie atrybuty opisu tabeli maj\u0105 proste typy danych. Wszystkie z\u0142o\u017cone atrybuty opisu obiektu, takie jak cz\u0119\u015bci i tablice, s\u0105 konwertowane na proste atrybuty w opisie tabeli. W przypadku cz\u0119\u015bci, opr\u00f3cz atrybut\u00f3w cz\u0119\u015bci tworzony jest atrybut Boolean, aby wskaza\u0107, czy cz\u0119\u015b\u0107 zosta\u0142a ustawiona, czy null.<\/p>\n<p>W opisie tabeli ka\u017cdy atrybut mo\u017ce by\u0107 identyfikowany przez \u015bcie\u017ck\u0119 atrybutu lub nazw\u0119 kolumny. W \u015bcie\u017cce atrybutu atrybuty z\u0142o\u017cone s\u0105 oddzielone kropkami <em>.<\/em>, a indeks p\u00f3l tablicy jest uj\u0119ty w nawiasy kwadratowe <em>[]<\/em>. Nazwa kolumny jest obliczana na podstawie \u015bcie\u017cki atrybutu, ale nie zawiera znak\u00f3w specjalnych i dlatego mo\u017ce by\u0107 r\u00f3wnie\u017c u\u017cywana jako nazwa kolumny w schemacie bazy danych tabeli. Nazwa tabeli i nazwy indeks\u00f3w s\u0105 r\u00f3wnie\u017c konwertowane na notacj\u0119, kt\u00f3ra mo\u017ce by\u0107 u\u017cyta w schemacie bazy danych. Opis tabeli jest u\u017cywany zar\u00f3wno do generowania tabel bazy danych, jak i podczas uzyskiwania dost\u0119pu do tabeli bazy danych. Na przyk\u0142ad \u015bcie\u017cki atrybut\u00f3w lub nazwy kolumn s\u0105 u\u017cywane podczas konwersji OQL na SQL.<\/p>\n<p>Podczas tworzenia opisu tabeli, numer wersji opisu obiektu jest przenoszony do opisu tabeli.<\/p>\n<table style=\"height: 368px; width: 100%; border-collapse: collapse;\">\n<caption>Przyk\u0142ad opisu tabeli obiektu biznesowego <em>Item<\/em><\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"3\">Opis tabeli ITEM 6.0<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>\u015acie\u017cka atrybutu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">description<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">DESCRIPTION<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (200)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">size[0]<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">SIZE|0|<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">size[1]<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">SIZE|1|<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">size[2]<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">SIZE|2|<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">value<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">VALUE<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">boolean<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; border-style: outset; height: 23px;\">value.amount1<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">VALUEAMOUNT1<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; border-style: outset; height: 23px;\">value.amount12<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">VALUEAMOUNT2<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; border-style: outset; height: 23px;\">value.amount3<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">VALUEAMOUNT3<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; border-style: outset; height: 23px;\">value.excact<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">VALUEEXCACT<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">byte<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>W ka\u017cdej bazie danych, w kt\u00f3rej generowany jest obiekt biznesowy, definicja tabeli jest r\u00f3wnie\u017c zapisywana w bazie danych w tym samym czasie, w kt\u00f3rym tworzona jest tabela bazy danych. Definicja tabeli jest kompletnym opisem schematu tabeli bazy danych, kt\u00f3ry jest niezale\u017cny od u\u017cywanego systemu zarz\u0105dzania baz\u0105 danych (DBMS). Definicja tabeli pobiera dane schematu z opisu tabeli. Definicja tabeli i aktywna tabela w bazie danych tworz\u0105 jednostk\u0119. Schemat aktywnych tabel odpowiada dok\u0142adnie danym w definicji tabeli.<\/p>\n<table style=\"height: 468.84px; width: 100%; border-collapse: collapse;\">\n<caption>Przyk\u0142ad definicji tabeli obiektu biznesowego <em>Item<\/em><\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 100%; border-style: outset;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 6.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a0 &#8211;<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">DESCRIPTION<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (200)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">SIZE|0|<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">SIZE|1|<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; border-style: outset; height: 24px;\">SIZE|2|<\/td>\n<td style=\"width: 50%; height: 24px; border-style: outset;\">Decimal(10,2)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">VALUE<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">boolean<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">VALUEAMOUNT1<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">VALUEAMOUNT2<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">VALUEAMOUNT3<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Decimal(21,6)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">VALUEEXCACT<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">byte<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Poni\u017cszy proces jest podsumowany od wprowadzenia opisu obiektu do wygenerowania tabeli bazy danych.<\/p>\n<figure id=\"attachment_20506\" aria-describedby=\"caption-attachment-20506\" style=\"width: 739px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-20506 size-full\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/2.png\" alt=\"Proces generowania tabeli bazy danych\" width=\"739\" height=\"171\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/2.png 739w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/2-300x69.png 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/2-50x12.png 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/2-600x139.png 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/2-320x74.png 320w\" sizes=\"auto, (max-width: 739px) 100vw, 739px\" \/><\/a><figcaption id=\"caption-attachment-20506\" class=\"wp-caption-text\">Proces generowania tabeli bazy danych<\/figcaption><\/figure>\n<p>Dla ka\u017cdego opisu obiektu istnieje dok\u0142adnie jeden opis tabeli. Opis tabeli nie musi by\u0107 zgodny z definicjami tabel w bazach danych. Odchylenia mog\u0105 jednak wyst\u0105pi\u0107 tylko wtedy, gdy system jest rozwijany lub gdy aktualizacje oprogramowania nie s\u0105 w pe\u0142ni aktywowane. Odchylenia s\u0105 zatem dozwolone tylko w systemach, w kt\u00f3rych trwaj\u0105 prace rozwojowe. We wszystkich innych systemach jest to b\u0142\u0105d.<\/p>\n<p>Opis tabeli i definicje tabel zawieraj\u0105 r\u00f3wnie\u017c numer wersji opisu obiektu, na podstawie kt\u00f3rego zosta\u0142y utworzone.<\/p>\n<h4 id=\"aktywacja-zmian-schematu-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Aktywacja_zmian_schematu_bazy_danych\"><\/span>Aktywacja zmian schematu bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Je\u015bli schemat tabeli bazy danych zostanie zmieniony, dane z poprzednio aktywnej tabeli musz\u0105 zosta\u0107 przeniesione do tabeli z nowym schematem. Ka\u017cda zmiana schematu bazy danych obiektu biznesowego przebiega zatem w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<ol>\n<li>Wygenerowanie tabeli tymczasowej z nowym schematem<\/li>\n<li>Przeniesienie danych z aktywnej tabeli do tabeli tymczasowej<\/li>\n<li>Zast\u0105pienie tabeli aktywnej tabel\u0105 tymczasow\u0105 i zapisanie definicji tabeli<\/li>\n<\/ol>\n<p>Po wygenerowaniu tabeli tymczasowej definicja tabeli nie jest jeszcze zmieniana w odniesieniu do schematu bazy danych. Jednak w definicji tabeli jest odnotowane, \u017ce zosta\u0142a wygenerowana tabela tymczasowa okre\u015blonej wersji. Tabela tymczasowa ma przedrostek <em>QC<\/em> przed nazw\u0105 aktywnej tabeli.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Je\u015bli aktywna tabela nosi nazw\u0119 ITEM, w\u00f3wczas odpowiadaj\u0105ca jej tabela tymczasowa nosi nazw\u0119 QCITEM.<\/div><\/section>\n<p>Opr\u00f3cz tabeli tymczasowej istnieje r\u00f3wnie\u017c tabela b\u0142\u0119d\u00f3w, kt\u00f3ra ma schemat aktywnej tabeli. Wszystkie rekordy danych, kt\u00f3rych nie mo\u017cna by\u0142o przenie\u015b\u0107 do tabeli tymczasowej, s\u0105 zapisywane w tabeli b\u0142\u0119d\u00f3w.<\/p>\n<p>Podczas przesy\u0142ania danych z aktywnej tabeli do tabeli tymczasowej, dane mog\u0105 by\u0107 uzupe\u0142niane lub zmieniane za pomoc\u0105 aktualizacji. Ten program aktualizacji jest wykonywany automatycznie za ka\u017cdym razem, gdy dane s\u0105 przesy\u0142ane. Transfer danych z aktywnej tabeli do tabeli tymczasowej jest okre\u015blany poni\u017cej jako <em>konwersja<\/em>.<\/p>\n<p>Po ca\u0142kowitym przekonwertowaniu zawarto\u015bci aktywnej tabeli do nowej tabeli tymczasowej, aktywna tabela mo\u017ce zosta\u0107 zast\u0105piona przez tabel\u0119 tymczasow\u0105 bez utraty danych. Tabela tymczasowa jest aktywowana w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<ol>\n<li>Usuni\u0119cie aktywnej tabeli<\/li>\n<li>Zmiana nazwy tabeli tymczasowej na aktywn\u0105<\/li>\n<li>Zast\u0105pienie definicji tabeli<\/li>\n<\/ol>\n<h4 id=\"przyklad-zmiany-schematu-danych\" ><span class=\"ez-toc-section\" id=\"Przyklad_zmiany_schematu_danych\"><\/span>Przyk\u0142ad zmiany schematu danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Poni\u017cszy przyk\u0142ad opisuje spos\u00f3b przeprowadzania zmiany schematu danych w systemie ERP. W tym przyk\u0142adzie nowy atrybut <em>type<\/em> jest dodawany do obiektu biznesowego <em>Item<\/em>. Najpierw wygenerowano nowy opis tabeli na podstawie zmienionego opisu obiektu.<\/p>\n<table style=\"height: 184px; width: 100%; border-collapse: collapse;\">\n<caption>Opis tabeli nowej wersji<\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"3\">Opis tabeli ITEM 3.0<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>\u015acie\u017cka atrybutu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">type<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">TYPE001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Short<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Definicja tabeli i aktywna tabela bazy danych, na kt\u00f3rej ma zosta\u0107 przeprowadzona zmiana schematu danych, nadal maj\u0105 stary schemat.<\/p>\n<table style=\"height: 279px; width: 100%; border-collapse: collapse;\">\n<caption>Definicja tabeli i aktywna tabela przed wygenerowaniem<\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 118px;\">\n<td style=\"width: 50%; border-style: outset; height: 118px;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a02.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a0&#8211;<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 50%; text-align: center; border-style: outset;\" colspan=\"2\">ITEM<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 50%; border-style: outset;\">GUID12A545417BF4&#8230;<\/td>\n<td style=\"width: 50%; border-style: outset;\">NUMBER001VSD0780VSD0781&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tabela tymczasowa jest generowana w bazie danych (np. przez <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/tworzenie-obiektu-biznesowego-crtbo\/\">crtbo<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/instalacja-aktualizacji-oprogramowania-upgaps\/\">upgaps<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/reorganizacja-obiektow-biznesowych-rgzbo\/\">rgzbo<\/a><\/em>) przy u\u017cyciu nowego opisu tabeli. Tymczasowa tabela ma schemat nowego opisu tabeli. Nowy schemat nie jest jeszcze przenoszony do definicji tabeli, ale pocz\u0105tkowo zapisywany jest tylko numer wersji nowej tabeli.<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 190px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 100%; border-style: outset; height: 26px;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a02.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a03.0<\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 41.3071%;\">\n<tbody>\n<tr>\n<td style=\"width: 28.8104%; text-align: center; border-style: outset;\" colspan=\"2\">ITEM<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.7298%; border-style: outset; text-align: center;\">GUID12A545417BF4&#8230;<\/td>\n<td style=\"width: 11.0806%; border-style: outset; text-align: center;\">NUMBER001VSD0780VSD0781&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 41.3105%;\">\n<tbody>\n<tr>\n<td style=\"text-align: center; width: 103.974%; border-style: outset;\" colspan=\"3\">QCITEM<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1429%; border-style: outset; text-align: center;\">GUID<\/td>\n<td style=\"width: 36.3777%; border-style: outset; text-align: center;\">NUMBER001<\/td>\n<td style=\"width: 45.4532%; border-style: outset; text-align: center;\">TYPE001<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Definicja tabeli, tabele aktywne i tymczasowe po wygenerowaniu tabeli tymczasowej<\/p>\n<p>Po wygenerowaniu tabeli tymczasowej dane (np. za pomoc\u0105 <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/aktywacja-obiektu-biznesowego\/\">actbo<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/konwersja-obiektu-biznesowego-cnvbo\/\">cnvbo<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/instalacja-aktualizacji-oprogramowania-upgaps\/\">upgaps<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/reorganizacja-obiektow-biznesowych-rgzbo\/\">rgzbo<\/a><\/em>) s\u0105 przenoszone z tabeli aktywnej do tabeli tymczasowej.<\/p>\n<p>Przesy\u0142anie danych z aktywnej tabeli do tabeli tymczasowej:<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 181px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 100%; border-style: outset; height: 26px;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a02.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a03.0<\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 14px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 14px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20556\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1.png\" alt=\"\" width=\"706\" height=\"189\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1.png 706w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1-300x80.png 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1-50x13.png 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1-600x161.png 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/Przeniesienie-danych-z-tabel-tymczasowej-do-stalej-1-320x86.png 320w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/a><\/p>\n<p>Po transferze tabela tymczasowa zawiera wszystkie dane z tabeli aktywnej i mo\u017ce je teraz zast\u0105pi\u0107 (np. za pomoc\u0105 <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/aktywacja-obiektu-biznesowego\/\">actbo<\/a><\/em>, <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/reorganizacja-obiektow-biznesowych-rgzbo\/\">rgzbo<\/a> <\/em>lub <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/instalacja-aktualizacji-oprogramowania-upgaps\/\">upgaps<\/a><\/em>). Z tego powodu aktywna tabela jest usuwana, a nazwa tabeli tymczasowej jest zmieniana na nazw\u0119 tabeli aktywnej. Jednocze\u015bnie definicja tabeli jest zmieniana na aktualn\u0105 wersj\u0119.<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 190px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 100%; border-style: outset; height: 26px;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<del>2.0<\/del> 3.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a0<del>3.0<\/del><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 50%; border-style: outset;\">TYPE001<\/td>\n<td style=\"width: 50%; border-style: outset;\">Short<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<figure id=\"attachment_20557\" aria-describedby=\"caption-attachment-20557\" style=\"width: 719px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/usuniecie-qc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-20557\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/usuniecie-qc.png\" alt=\"\" width=\"719\" height=\"156\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/usuniecie-qc.png 719w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/usuniecie-qc-300x65.png 300w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/usuniecie-qc-50x11.png 50w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/usuniecie-qc-600x130.png 600w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/usuniecie-qc-320x69.png 320w\" sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><\/a><figcaption id=\"caption-attachment-20557\" class=\"wp-caption-text\">Zast\u0105pienie tabeli aktywnej tabel\u0105 tymczasow\u0105<\/figcaption><\/figure>\n<p>Po zmianie schematu danych definicja tabeli i tabela maj\u0105 schemat nowego opisu tabeli.<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 190px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 100%; border-style: outset; height: 26px;\" colspan=\"2\">Aktywny\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a03.0Tymczasowy\u00a0 \u00a0 \u00a0 \u00a0<del>&#8211;<\/del><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 50%; border-style: outset;\">TYPE001<\/td>\n<td style=\"width: 50%; border-style: outset;\">Short<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 41.3071%;\">\n<tbody>\n<tr>\n<td style=\"text-align: center; border-style: outset; width: 23.2701%;\" colspan=\"3\"><strong>ITEM<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.7298%; border-style: outset; text-align: center;\">GUID12A545<\/p>\n<p>417BF4<\/p>\n<p>&#8230;<\/td>\n<td style=\"width: 5.5403%; border-style: outset; text-align: center;\">NUMBER001VSD0780<\/p>\n<p>VSD0781<\/p>\n<p>&#8230;<\/td>\n<td style=\"width: 28.8104%; border-style: outset; text-align: center;\">TYPE0012<\/p>\n<p>2<\/p>\n<p>&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Nowa aktywna tabela i definicja tabeli<\/p>\n<h4 id=\"zaleznosc-czasowa\" ><span class=\"ez-toc-section\" id=\"Zaleznosc_czasowa\"><\/span>Zale\u017cno\u015b\u0107 czasowa<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Obiekty biznesowe mog\u0105 by\u0107 opcjonalnie zale\u017cne od czasu. W przypadku obiekt\u00f3w biznesowych zale\u017cnych od czasu, atrybuty <em>validFrom<\/em> i <em>validUntil<\/em> s\u0105 automatycznie tworzone podczas generowania schematu obiektu biznesowego.<\/p>\n<ul>\n<li>Atrybut <em>validFrom<\/em> zawiera dat\u0119 od kt\u00f3rej instancja obiektu biznesowego jest wa\u017cna. Atrybut validFrom jest do\u0142\u0105czany jako atrybut klucza do wszystkich unikalnych kluczy, gdy obiekt biznesowy jest generowany w bazie danych.<\/li>\n<li>Atrybut validUntil zawiera od kt\u00f3rej instancja obiektu biznesowego sta\u0142a si\u0119 niewa\u017cna.<\/li>\n<\/ul>\n<table style=\"height: 207px; width: 100%; border-collapse: collapse;\">\n<caption>Przyk\u0142ad opisu obiektu dla Bussines Object <em>Item<\/em><\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\">Opis obiektu <em>Item<\/em><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa atrybutu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">validFrom<\/span><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">Timestamp<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">validUntil<\/span><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">Timestamp<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(guid)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(number)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20539\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png\" alt=\"\" width=\"51\" height=\"81\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png 51w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1-31x50.png 31w\" sizes=\"auto, (max-width: 51px) 100vw, 51px\" \/><\/a><\/p>\n<table style=\"height: 230px; width: 100%; border-collapse: collapse;\">\n<caption>Opis tabeli ITEM<\/caption>\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"3\">Opis tabeli ITEM 3.0<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>\u015acie\u017cka atrybutu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">NUMBER001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">description<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">DESCRIPTION<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (200)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">validFrom<\/span><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">VALIDFROM<\/span><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">TimeStamp<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><span style=\"color: #ff0000;\">validUntil<\/span><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">VALIDUNTIL<\/span><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">TimeStamp<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 25%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20539\" src=\"https:\/\/pomoc.comarch.pl\/cee\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png\" alt=\"\" width=\"51\" height=\"81\" srcset=\"https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1.png 51w, https:\/\/pomoc.comarch.pl\/cee\/640\/wp-content\/uploads\/2024\/11\/strzalka-w-dol-1-31x50.png 31w\" sizes=\"auto, (max-width: 51px) 100vw, 51px\" \/><\/a><\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 187px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\"><strong>Definicja tabeli <em>Item<\/em><\/strong><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Nazwa kolumny<\/strong><\/td>\n<td style=\"width: 50%; border-style: outset; height: 26px;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">GUID<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">Number001<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">VALIDFROM<\/span><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">TimeStamp<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 50%; border-style: outset;\"><span style=\"color: #ff0000;\">VALIDUNTIL<\/span><\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\"><span style=\"color: #ff0000;\">TimeStamp<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu bazy danych<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE600<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(GUID, <span style=\"color: #ff0000;\">VALIDFROM<\/span>)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">|10O2TVTPE602<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(NUMBER001, <span style=\"color: #ff0000;\">VALIDFROM<\/span>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Przyk\u0142ad obiektu biznesowego zale\u017cnego od czasu<\/p>\n<p>Poniewa\u017c atrybut validFrom zosta\u0142 do\u0142\u0105czony do unikalnych kluczy, baza danych nie mo\u017ce ju\u017c sprawdza\u0107, czy unikalny klucz jest naprawd\u0119 unikalny. Niedozwolone jest na przyk\u0142ad, aby klucz biznesowy by\u0142 inny w dw\u00f3ch wersjach identycznego obiektu biznesowego.<\/p>\n<h4 id=\"referencje-do-obiektow\" ><span class=\"ez-toc-section\" id=\"Referencje_do_obiektow\"><\/span>Referencje do obiekt\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Atrybuty dowolnego typu i dowolnej liczby mog\u0105 by\u0107 u\u017cywane w kluczu podstawowym obiektu biznesowego. Warto\u015bci atrybut\u00f3w klucza g\u0142\u00f3wnego okre\u015blonego obiektu biznesowego s\u0105 zakodowane jako sekwencja bajt\u00f3w w SAS. D\u0142ugo\u015b\u0107 tej sekwencji bajt\u00f3w zale\u017cy od liczby i rozmiaru atrybut\u00f3w klucza g\u0142\u00f3wnego i dlatego jest bardzo r\u00f3\u017cna. Ta sekwencja bajt\u00f3w jest r\u00f3wnie\u017c okre\u015blana jako klucz podstawowy obiektu biznesowego.<\/p>\n<p>Obiekty biznesowe mog\u0105 mie\u0107 dowolny klucz. Nie jest zatem mo\u017cliwe bezpo\u015brednie odwo\u0142anie z obiektu biznesowego do dowolnego obiektu biznesowego, kt\u00f3ry nie jest znany w momencie projektowania. Opcj\u0105 odniesienia mo\u017ce by\u0107 klucz podstawowy obiektu biznesowego, do kt\u00f3rego nale\u017cy si\u0119 odwo\u0142a\u0107. Mo\u017ce on jednak mie\u0107 dowoln\u0105 d\u0142ugo\u015b\u0107.<\/p>\n<p>Odniesienia do obiekt\u00f3w rozwi\u0105zuj\u0105 ten problem. Je\u015bli klucz podstawowy jest d\u0142u\u017cszy ni\u017c zdefiniowana d\u0142ugo\u015b\u0107, w\u00f3wczas odwo\u0142anie do obiektu tworzy si\u0119 po\u015brednio. Odwo\u0142anie do obiektu jest u\u017cywane jako odniesienie. Je\u015bli odwo\u0142anie do obiektu ma zosta\u0107 rozwi\u0105zane, oryginalny klucz podstawowy jest okre\u015blany dla odwo\u0142ania do obiektu.<\/p>\n<p>Je\u015bli obiekt z d\u0142ugim kluczem podstawowym jest ponownie wywo\u0142ywany przez odniesienie do obiektu, klucz podstawowy ma przypisany unikalny identyfikator w obiekcie biznesowym:<\/p>\n<p>com.cisag.sys.kernel.obj.ObjectReference<\/p>\n<p>i jest przechowywany. Odniesienia do obiekt\u00f3w s\u0105 u\u017cywane na przyk\u0142ad w tabelach NLS atrybut\u00f3w mo\u017cliwych do zlokalizowania.<\/p>\n<p>Klucze podstawowe i odniesienia do obiekt\u00f3w nie mog\u0105 by\u0107 obliczane ani rozwi\u0105zywane za pomoc\u0105 narz\u0119dzi bazy danych. Z tego powodu nie jest mo\u017cliwe utworzenie JOIN w SQL poprzez odwo\u0142anie do obiektu.<\/p>\n<p>Podczas projektowania modelu danych nale\u017cy zatem zadba\u0107 o to, aby obiekty biznesowe mia\u0142y klucze podstawowe, kt\u00f3re s\u0105 jak najkr\u00f3tsze (np. Guid), aby unikn\u0105\u0107 tworzenia odniesie\u0144 do obiekt\u00f3w.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">U\u017cywanie odwo\u0142a\u0144 do obiekt\u00f3w w kodzie aplikacji jest zabronione.<\/div><\/section>\n<h4 id=\"sblobs\" ><span class=\"ez-toc-section\" id=\"SBLOBs\"><\/span>SBLOBs<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>System ERP rozpoznaje dwa typy obiekt\u00f3w BLOB (Binary Large OBjects):<\/p>\n<ul>\n<li><strong>BLOB (Binary Large OBjects)<\/strong> &#8211; zawarto\u015b\u0107 BLOB jest ca\u0142kowicie \u0142adowana do pami\u0119ci g\u0142\u00f3wnej przez Persistence service\u00a0podczas otwierania obiektu biznesowego. Obiekty BLOB s\u0105 zapisywane bezpo\u015brednio w tabeli, w kt\u00f3rej zapisywany jest r\u00f3wnie\u017c obiekt biznesowy.<\/li>\n<li><strong>SBLOB (Streamable Binary Large OBjects)<\/strong> &#8211; zawarto\u015b\u0107 SBLOB nie jest \u0142adowana przez Persistence service\u00a0podczas \u0142adowania obiektu biznesowego, ale tylko w ma\u0142ych blokach, gdy zawarto\u015b\u0107 jest dost\u0119pna. Zawarto\u015b\u0107 SBLOB jest przechowywana w oddzielnym obiekcie biznesowym:com.cisag.sys.kernel.obj.SBLOBFragmentprzechowywanym w oddzielnym obiekcie biznesowym. SBLOB maj\u0105 mi\u0119dzy innymi ograniczenia dotycz\u0105ce zarz\u0105dzania transakcjami. Z tego powodu SBLOB powinny by\u0107 u\u017cywane tylko w ramach silnika systemu ERP.<\/li>\n<\/ul>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">U\u017cywanie obiekt\u00f3w SBLOB w kodzie aplikacji jest zabronione.<\/div><\/section>\n<h4 id=\"przechowywanie-blob\" ><span class=\"ez-toc-section\" id=\"Przechowywanie_BLOB\"><\/span>Przechowywanie BLOB<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>KnowledgeStore wymaga BLOB-\u00f3w o nieograniczonej d\u0142ugo\u015bci. Te obiekty BLOB s\u0105 przechowywane w tabeli BLOB_STORAGE. Tabela ta nie nale\u017cy do \u017cadnego obiektu biznesowego. Nie mo\u017cna uzyska\u0107 dost\u0119pu do tej tabeli bezpo\u015brednio za pomoc\u0105 \u017cadnego publicznego interfejsu programowania.<\/p>\n<p>U\u017cywanie Knowledge Store mo\u017ce powodowa\u0107, i\u017c tabela BLOB_STORAGE mo\u017ce rosn\u0105\u0107. Nale\u017cy o tym pami\u0119ta\u0107 podczas konfigurowania systemu bazy danych.<\/p>\n<h4 id=\"atrybuty-mozliwe-do-zlokalizowania\" ><span class=\"ez-toc-section\" id=\"Atrybuty_mozliwe_do_zlokalizowania\"><\/span>Atrybuty mo\u017cliwe do zlokalizowania<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Atrybut string mo\u017ce by\u0107 oznaczony jako lokalny w systemie ERP. W takim przypadku atrybut ten mo\u017ce nie tylko przechowywa\u0107 warto\u015b\u0107, ale tak\u017ce t\u0142umaczenie dla ka\u017cdego skonfigurowanego j\u0119zyka bazy danych. Ka\u017cda baza danych systemu ERP ma dok\u0142adnie jeden j\u0119zyk wiod\u0105cy i dowoln\u0105 liczb\u0119 j\u0119zyk\u00f3w dodatkowych. Warto\u015b\u0107 atrybutu w j\u0119zyku podstawowym mo\u017ce by\u0107 odczytywana i zapisywana szczeg\u00f3lnie efektywnie. Warto\u015bci w j\u0119zykach drugorz\u0119dnych s\u0105 przechowywane w oddzielnych obiektach biznesowych (tabela NLS).<\/p>\n<table style=\"height: 184px; width: 100%; border-collapse: collapse;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\">Opis obiektu <em>Item<\/em><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa atrybutu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">guid<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">number<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (10)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">description<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (65) (ML)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(guid)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">ByNumber<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(number)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 100%; height: 201px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 100%; height: 23px; border-style: outset;\" colspan=\"2\">Opis obiektu <em>Item_DESCRIPTION<\/em><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa atrybutu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Typ danych<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">objectReference<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Byte[54]<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">language<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">String (4)<\/td>\n<\/tr>\n<tr style=\"height: 17px;\">\n<td style=\"width: 50%; height: 17px; border-style: outset;\">X_guid<\/td>\n<td style=\"width: 50%; height: 17px; border-style: outset;\">Guid<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; border-style: outset; height: 23px;\">value<\/td>\n<td style=\"width: 50%; border-style: outset; height: 23px;\">String (65)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa indeksu<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Definicja indeksu<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PrimaryKey(objectReference,language)<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">ByObjectPk<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">SecondaryKey(X_guid,language)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Przyk\u0142ad obiektu z atrybutem umo\u017cliwiaj\u0105cym lokalizacj\u0119<\/p>\n<p>Tabela NLS zawiera rekord danych z t\u0142umaczeniem atrybutu zlokalizowanego dla ka\u017cdego rekordu danych w tabeli g\u0142\u00f3wnej i dla ka\u017cdego j\u0119zyka dodatkowego. Tabela NLS jest automatycznie generowana przez narz\u0119dzie <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/tworzenie-obiektu-biznesowego-crtbo\/\">crtbo<\/a><\/em>, gdy generowany jest obiekt biznesowy z atrybutem lokalizacji. Atrybuty wygenerowanej tabeli NLS pochodz\u0105 z obiektu g\u0142\u00f3wnego:<\/p>\n<table>\n<thead>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\"><strong>Atrybut<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"359\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\">objectReference<\/td>\n<td style=\"border-style: outset;\" width=\"359\">Odniesienie do obiektu jest unikaln\u0105 identyfikacj\u0105 g\u0142\u00f3wnego obiektu.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\">validFrom<\/td>\n<td style=\"border-style: outset;\" width=\"359\">Je\u015bli g\u0142\u00f3wny obiekt jest zale\u017cny od czasu, tabela NLS zawiera r\u00f3wnie\u017c dat\u0119 obowi\u0105zywania, dzi\u0119ki czemu warto\u015bci atrybutu lokalnego mog\u0105 by\u0107 r\u00f3wnie\u017c zapisywane jako zale\u017cne od czasu. Je\u015bli obiekt nie jest zale\u017cny od drugiego, tabela NLS nie ma atrybutu validFrom.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\">language<\/td>\n<td style=\"border-style: outset;\" width=\"359\">Tabela NLS zawiera t\u0142umaczenie atrybutu zlokalizowanego dla ka\u017cdego dodatkowego j\u0119zyka w bazie danych. Atrybut <em>language<\/em> okre\u015bla, kt\u00f3re t\u0142umaczenie zawiera atrybut <em>value<\/em>.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\">X_pk1, &#8230;, X_pknKlucz g\u0142\u00f3wny obiektu g\u0142\u00f3wnego<\/td>\n<td style=\"border-style: outset;\" width=\"359\">Klucz g\u0142\u00f3wny obiektu g\u0142\u00f3wnego jest zapisywany dla ka\u017cdej warto\u015bci atrybutu lokalnego w tabeli NLS, dzi\u0119ki czemu mo\u017cna u\u017cy\u0107 JOIN mi\u0119dzy tabel\u0105 g\u0142\u00f3wn\u0105 a tabelami NLS.<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"180\">value<\/td>\n<td style=\"border-style: outset;\" width=\"359\">T\u0142umaczenie zlokalizowanego atrybutu dla j\u0119zyka dodatkowego okre\u015blonego w atrybucie <em>language<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Gdy zapisywana jest nowa instancja obiektu biznesowego, tworzony jest rekord danych dla ka\u017cdego j\u0119zyka pomocniczego bazy danych we wszystkich tabelach NLS nale\u017c\u0105cych do tego obiektu. Je\u015bli instancja obiektu biznesowego zostanie usuni\u0119ta, rekordy danych nale\u017c\u0105ce do tego obiektu zostan\u0105 usuni\u0119te z tabel NLS. Im wi\u0119cej j\u0119zyk\u00f3w dodatkowych jest tworzonych w bazie danych, tym bardziej czasoch\u0142onne jest tworzenie i usuwanie obiekt\u00f3w biznesowych z tak zlokalizowanymi atrybutami.<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 92px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"text-align: center; width: 125%; height: 23px; border-style: outset;\" colspan=\"3\"><strong>Item<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 32.0238%; height: 23px; border-style: outset;\"><strong>guid<\/strong><\/td>\n<td style=\"width: 30.7143%; height: 23px; border-style: outset;\"><strong>number<\/strong><\/td>\n<td style=\"width: 62.2619%; height: 23px; border-style: outset;\"><strong>description<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 32.0238%; height: 23px; border-style: outset;\">A1B4<\/td>\n<td style=\"width: 30.7143%; height: 23px; border-style: outset;\">0001<\/td>\n<td style=\"width: 62.2619%; height: 23px; border-style: outset;\">Papier<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 32.0238%; height: 23px; border-style: outset;\">4CA8<\/td>\n<td style=\"width: 30.7143%; height: 23px; border-style: outset;\">0002<\/td>\n<td style=\"width: 62.2619%; height: 23px; border-style: outset;\">\u015arubokr\u0119t<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: collapse; width: 100%; height: 138px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"text-align: center; height: 23px; border-style: outset; width: 218.869%;\" colspan=\"4\"><strong>Item_DESCRIPTION<\/strong><br \/>\n<strong><br \/>\n<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25.3571%; height: 23px; border-style: outset;\"><strong>objectReference<\/strong><\/td>\n<td style=\"width: 24.881%; height: 23px; border-style: outset;\"><strong>language<\/strong><\/td>\n<td style=\"width: 30.1785%; height: 23px; border-style: outset;\"><strong>X_guid<\/strong><\/td>\n<td style=\"width: 138.452%; border-style: outset; height: 23px;\"><strong>value<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25.3571%; height: 23px; border-style: outset;\">D468A1B4<\/td>\n<td style=\"width: 24.881%; height: 23px; border-style: outset;\">en<\/td>\n<td style=\"width: 30.1785%; height: 23px; border-style: outset;\">A1B4<\/td>\n<td style=\"width: 138.452%; border-style: outset; height: 23px;\">Paper<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25.3571%; height: 23px; border-style: outset;\">D468A1B4<\/td>\n<td style=\"width: 24.881%; height: 23px; border-style: outset;\">it<\/td>\n<td style=\"width: 30.1785%; height: 23px; border-style: outset;\">A1B4<\/td>\n<td style=\"width: 138.452%; border-style: outset; height: 23px;\">Carta<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25.3571%; border-style: outset; height: 23px;\">D4684CA8<\/td>\n<td style=\"width: 24.881%; border-style: outset; height: 23px;\">en<\/td>\n<td style=\"width: 30.1785%; border-style: outset; height: 23px;\">4CA8<\/td>\n<td style=\"width: 138.452%; border-style: outset; height: 23px;\">Screw<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 25.3571%; border-style: outset; height: 23px;\">D4684CA8<\/td>\n<td style=\"width: 24.881%; border-style: outset; height: 23px;\">it<\/td>\n<td style=\"width: 30.1785%; border-style: outset; height: 23px;\">4CA8<\/td>\n<td style=\"width: 138.452%; border-style: outset; height: 23px;\">Cacciavite<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Przyk\u0142ad zawarto\u015bci tabeli ze zlokalizowanym atrybutem.<\/p>\n<p>Je\u015bli obiekt biznesowy ma by\u0107 odczytywany w j\u0119zyku podstawowym, dost\u0119p do tabeli NLS nie jest konieczny. Je\u015bli jednak obiekt biznesowy ma by\u0107 odczytywany w j\u0119zyku dodatkowym, warto\u015b\u0107 jest odczytywana z odpowiedniej tabeli NLS dla ka\u017cdego atrybutu, kt\u00f3ry mo\u017cna zlokalizowa\u0107. Dost\u0119p do odczytu warto\u015bci w j\u0119zyku dodatkowym jest zatem bardziej z\u0142o\u017cony ni\u017c w j\u0119zyku podstawowym.<\/p>\n<h4 id=\"mapowanie-typow-danych-systemu-erp\" ><span class=\"ez-toc-section\" id=\"Mapowanie_typow_danych_systemu_ERP\"><\/span>Mapowanie typ\u00f3w danych systemu ERP<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Mapowanie typ\u00f3w danych w Comarch ERP Enterprise zale\u017cy od u\u017cywanego systemu DBMS. Gdy tabela bazy danych jest generowana z opisu tabeli, typy danych kolumn s\u0105 mapowane do bazy danych w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<table>\n<thead>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\"><strong>Typ danych<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"123\"><strong>Oracle 9i\/10g<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"104\"><strong>SQL-Server<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"104\"><strong>DB2\/400<\/strong><\/td>\n<td style=\"border-style: outset;\" width=\"104\"><strong>PostgreSQL<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">binary(l)<\/td>\n<td style=\"border-style: outset;\" width=\"123\">RAW(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARBINARY(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARCHAR(l) FOR BITDATA<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BYTEA<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">blob<\/td>\n<td style=\"border-style: outset;\" width=\"123\">BLOB<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARBINARY(MAX)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BLOB(16M)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BYTEA<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">boolean<\/td>\n<td style=\"border-style: outset;\" width=\"123\">CHAR(1)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">CHAR(1)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">CHAR(1)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BOOLEAN<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">byte<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(3)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">char<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NCHAR(1)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">NCHAR(1)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">GRAPHIC(1) CCSID 13488<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARCHAR(1)<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">Clob<\/td>\n<td style=\"border-style: outset;\" width=\"123\">CLOB<\/td>\n<td style=\"border-style: outset;\" width=\"104\">NVARCHAR(MAX)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DBCLOB(16M) CCSID 13488<\/td>\n<td style=\"border-style: outset;\" width=\"104\">TEXT<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">decimal(l,s)<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(l,s)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DECIMAL(l,s)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DECIMAL(l,s)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DECIMAL(l,s)<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">double<\/td>\n<td style=\"border-style: outset;\" width=\"123\">DOUBLE PRECISION<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DOUBLE PRECISION<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DOUBLE PRECISION<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DOUBLE PRECISION<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">float<\/td>\n<td style=\"border-style: outset;\" width=\"123\">FLOAT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">REAL<\/td>\n<td style=\"border-style: outset;\" width=\"104\">REAL<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DOUBLE PRECISION<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">guid<\/td>\n<td style=\"border-style: outset;\" width=\"123\">RAW(16)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BINARY(16)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">CHAR(16) FOR BIT DATA<\/td>\n<td style=\"border-style: outset;\" width=\"104\">UUID<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">int<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(10,0)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">INT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">INTEGER<\/td>\n<td style=\"border-style: outset;\" width=\"104\">INT<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">long<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(19,0)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BIGINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BIGINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">BIGINT<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">short<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(5,0)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">String(l)<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NVARCHAR2(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">NVARCHAR(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARGRAPHIC(l) CCSID 13488<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARCHAR(l)<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">timestamp<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(17,0)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">DECIMAL(17)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">TIMESTAMP<\/td>\n<td style=\"border-style: outset;\" width=\"104\">TIMESTAMP<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">varstring(l)<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NVARCHAR2(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">NVARCHAR(l)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARGRAPHIC(l) CCSID 13488<\/td>\n<td style=\"border-style: outset;\" width=\"104\">VARCHAR(l)<\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: outset;\" width=\"104\">valueset<\/td>\n<td style=\"border-style: outset;\" width=\"123\">NUMBER(5,0)<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<td style=\"border-style: outset;\" width=\"104\">SMALLINT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Typ danych <em>Timestamp<\/em> nie mo\u017ce by\u0107 zapisany bezpo\u015brednio w Oracle 9i\/10g i SQL Server, poniewa\u017c typy danych czasu obs\u0142ugiwane przez te DBMS nie maj\u0105 wymaganej dok\u0142adno\u015bci 1 ms. Znacznik czasu jest zapisywany w tych systemach DBMS jako liczba w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<p>yyyyMMddhhmmssSSSS<\/p>\n<ul>\n<li>y &#8211; rok<\/li>\n<li>M &#8211; miesi\u0105c<\/li>\n<li>d &#8211; dzie\u0144 miesi\u0105ca<\/li>\n<li>h &#8211; godzina dnia<\/li>\n<li>m &#8211; minuta<\/li>\n<li>s &#8211; sekunda<\/li>\n<li>S &#8211; milisekunda<\/li>\n<\/ul>\n<p>Typ danych <em>boolean<\/em> jest przechowywany we wszystkich DBMS jako CHAR(1). Warto\u015b\u0107:<\/p>\n<ul>\n<li>0 &#8211; oznacza fa\u0142sz<\/li>\n<li>1 &#8211;\u00a0 oznacza prawd\u0119<\/li>\n<\/ul>\n<h4 id=\"dostep-za-pomoca-sql\" ><span class=\"ez-toc-section\" id=\"Dostep_za_pomoca_SQL\"><\/span>Dost\u0119p za pomoc\u0105 SQL<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>W przypadku dost\u0119pu do bazy danych zarz\u0105dzanej przez system ERP za pomoc\u0105 SQL, nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na nast\u0119puj\u0105ce kwestie:<\/p>\n<ul>\n<li>nazwy tabel i atrybut\u00f3w w bazie danych r\u00f3\u017cni\u0105 si\u0119 od nazw u\u017cywanych w systemie ERP<\/li>\n<li>mapowanie typ\u00f3w danych systemu ERP na typy danych SQL jest specyficzne dla bazy danych<\/li>\n<li>obiekty biznesowe mog\u0105 by\u0107 zale\u017cne od czasu, wi\u0119c rekord danych mo\u017ce istnie\u0107 w kilku wersjach. Nale\u017cy to wzi\u0105\u0107 pod uwag\u0119, zw\u0142aszcza w przypadku po\u0142\u0105cze\u0144 z danymi podstawowymi.<\/li>\n<li>atrybuty mo\u017cliwe do zlokalizowania musz\u0105 by\u0107 rozwi\u0105zywane r\u0119cznie za pomoc\u0105 klucza g\u0142\u00f3wnego.<\/li>\n<li>odwo\u0142ania do obiekt\u00f3w nie mog\u0105 by\u0107 rozwi\u0105zywane za pomoc\u0105 SQL<\/li>\n<li>SBLOB nie mog\u0105 by\u0107 wyszukiwane za pomoc\u0105 SQL.<\/li>\n<\/ul>\n<p>Dost\u0119p za po\u015brednictwem sterownika ODBC systemu ERP lub aplikacji systemu ERP jest prostszy ni\u017c bezpo\u015bredni dost\u0119p za pomoc\u0105 SQL.<\/p>\n<h5 id=\"zmiany-w-bazie-danych\" ><span class=\"ez-toc-section\" id=\"Zmiany_w_bazie_danych\"><\/span>Zmiany w bazie danych<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>SQL powinien by\u0107 u\u017cywany tylko do odczytu bazy danych. Je\u015bli dane w bazie danych zostan\u0105 zmienione, a SAS jest uruchomiony, dane w pami\u0119ci podr\u0119cznej SAS mog\u0105 nie by\u0107 ju\u017c zgodne z danymi w bazie danych. Mo\u017ce to prowadzi\u0107 do niesp\u00f3jno\u015bci, a tym samym do utraty danych. Ponadto modele danych wi\u0119kszo\u015bci jednostek biznesowych s\u0105 tak z\u0142o\u017cone, \u017ce konsekwencje i zale\u017cno\u015bci zmiany nie zawsze s\u0105 rozpoznawalne. Zdecydowanie odradzanym jest wprowadzanie zmian w bazie danych systemu ERP za pomoc\u0105 SQL. Je\u015bli r\u0119czne zmiany s\u0105 nieuniknione, mo\u017cesz u\u017cy\u0107 aplikacji <em>Polecenia OQL<\/em>.<\/p>\n<h5 id=\"przywracanie-bazy\" ><span class=\"ez-toc-section\" id=\"Przywracanie_bazy\"><\/span>Przywracanie bazy<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Kopia zapasowa bazy danych powinna by\u0107 zawsze tworzona i przywracana jako ca\u0142o\u015b\u0107. Przywracanie pojedynczych tabel nie jest zalecane ze wzgl\u0119du na z\u0142o\u017cony model danych, poniewa\u017c zale\u017cno\u015bci przywracanej tabeli zazwyczaj nie s\u0105 znane.<\/p>\n<p>Je\u015bli aktualizacje oprogramowania ze zmianami w modelu danych zosta\u0142y zaimportowane do systemu po utworzeniu kopii zapasowej, kt\u00f3ra ma zosta\u0107 przywr\u00f3cona, w\u00f3wczas bazy danych nie mog\u0105 by\u0107 przywracane pojedynczo. Nale\u017cy r\u00f3wnie\u017c zauwa\u017cy\u0107, \u017ce zawarto\u015b\u0107 bazy danych OLAP jest obliczana na podstawie bazy danych OLTP. Przywr\u00f3cenie bazy danych OLTP bez przywr\u00f3cenia bazy danych OLAP mo\u017ce prowadzi\u0107 do niesp\u00f3jnych stan\u00f3w.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Kopia zapasowa systemu ERP musi by\u0107 zawsze tworzona i przywracana jako ca\u0142o\u015b\u0107, tj. ze wszystkimi bazami danych i systemem plik\u00f3w.<\/div><\/section>\n<h4 id=\"informacje-o-bazie-danych\" ><span class=\"ez-toc-section\" id=\"Informacje_o_bazie_danych\"><\/span>Informacje o bazie danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Konfiguracja bazy danych jest przechowywana w bazie konfiguracyjnej. Jednak niekt\u00f3re dane konfiguracyjne wp\u0142ywaj\u0105 na zawarto\u015b\u0107 bazy danych i dlatego nie mo\u017cna ich zmieni\u0107 lub mo\u017cna je zmieni\u0107 tylko po reorganizacji bazy danych. Duplikatem tych danych konfiguracyjnych s\u0105 informacje o bazie danych. Informacje o bazie danych obejmuj\u0105 nast\u0119puj\u0105ce dane:<\/p>\n<table style=\"width: 100%; height: 602px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"height: 23px; border-style: outset;\" width=\"145\"><strong>Dane<\/strong><\/td>\n<td style=\"height: 23px; border-style: outset;\" width=\"398\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px; border-style: outset;\" width=\"145\">System<\/td>\n<td style=\"height: 70px; border-style: outset;\" width=\"398\">System, do kt\u00f3rego nale\u017cy baza danych, jest zapisany w informacjach o bazie danych. Z wyj\u0105tkiem bazy konfiguracyjnej, ka\u017cda baza danych nale\u017cy do dok\u0142adnie jednego systemu.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"height: 46px; border-style: outset;\" width=\"145\"><span style=\"color: #000000;\">Zawarto\u015b\u0107<\/span><\/td>\n<td style=\"height: 46px; border-style: outset;\" width=\"398\"><span style=\"color: #000000;\">Zawarto\u015b\u0107 bazy danych nie mo\u017ce i nigdy nie mo\u017ce si\u0119 zmieni\u0107. Zawarto\u015b\u0107 bazy danych wp\u0142ywa mi\u0119dzy innymi na schemat bazy danych.<\/span><\/td>\n<\/tr>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px; border-style: outset;\" width=\"145\">Sterownik systemu ERP<\/td>\n<td style=\"height: 70px; border-style: outset;\" width=\"398\">W zale\u017cno\u015bci od sterownika systemu ERP dane mog\u0105 by\u0107 zapisywane w r\u00f3\u017cny spos\u00f3b w bazie danych. Zmiana sterownika systemu ERP dla istniej\u0105cej bazy danych jest niedozwolona.<\/td>\n<\/tr>\n<tr style=\"height: 93px;\">\n<td style=\"height: 93px; border-style: outset;\" width=\"145\">J\u0119zyk wiod\u0105cy<\/td>\n<td style=\"height: 93px; border-style: outset;\" width=\"398\">Tekst atrybutu zlokalizowanego w j\u0119zyku podstawowym znajduje si\u0119 w obiekcie biznesowym. Zmiana konfiguracji bez reorganizacji t\u0142umacze\u0144 spowodowa\u0142aby wy\u015bwietlenie nieprawid\u0142owego t\u0142umaczenia j\u0119zyka podstawowego.<\/td>\n<\/tr>\n<tr style=\"height: 300px;\">\n<td style=\"height: 300px; border-style: outset;\" width=\"145\">J\u0119zyki dodatkowe<\/td>\n<td style=\"height: 300px; border-style: outset;\" width=\"398\">T\u0142umaczenia atrybutu zlokalizowanego w j\u0119zykach dodatkowych mo\u017cna znale\u017a\u0107 w odpowiedniej tabeli NLS. Zmiana konfiguracji bez reorganizacji t\u0142umacze\u0144 skutkuje zbyt du\u017c\u0105 lub zbyt ma\u0142\u0105 liczb\u0105 t\u0142umacze\u0144 w tabeli NLS.Opr\u00f3cz dodatkowych j\u0119zyk\u00f3w samej bazy danych OLTP, dodatkowe j\u0119zyki bazy danych repozytorium s\u0105 r\u00f3wnie\u017c przechowywane w bazie danych OLTP. J\u0119zyki dodatkowe bazy danych repozytorium s\u0105 u\u017cywane dla obiekt\u00f3w biznesowych z danymi podstawowymi konfiguracji typu danych (wy\u015bwietlanie), kt\u00f3rych atrybuty wieloj\u0119zyczne maj\u0105 by\u0107 wy\u015bwietlane w j\u0119zyku wy\u015bwietlania.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 id=\"ograniczenia-specyficzne-dla-dbms\" ><span class=\"ez-toc-section\" id=\"Ograniczenia_specyficzne_dla_DBMS\"><\/span>Ograniczenia specyficzne dla DBMS<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>System ERP powinien oferowa\u0107 tak\u0105 sam\u0105 funkcjonalno\u015b\u0107 we wszystkich DBMS. Poniewa\u017c systemy DBMS r\u00f3\u017cni\u0105 si\u0119 zakresem funkcji, system ERP musi ukrywa\u0107 te r\u00f3\u017cnice lub sprawdza\u0107 je jako ograniczenie og\u00f3lnie niezale\u017cne od systemu DBMS. Jest to jedyny spos\u00f3b, aby zapewni\u0107, \u017ce system ERP zachowuje si\u0119 identycznie na wszystkich systemach DBMS.<\/p>\n<h5 id=\"ograniczenia-oracle\" ><span class=\"ez-toc-section\" id=\"Ograniczenia_Oracle\"><\/span>Ograniczenia Oracle<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><strong>1000 kolumn na klauzul\u0119 join<\/strong><\/p>\n<p>Suma wszystkich kolumn wszystkich tabel u\u017cytych w klauzuli join instrukcji SELECT musi by\u0107 mniejsza ni\u017c 1000.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/p>\n<p>Tabela A &#8211; ma 400 kolumn<\/p>\n<p>Tabela B &#8211; ma 500 kolumn<\/p>\n<p>Tabela C &#8211; ma 300 kolumn<\/p>\n<p>Polecenie:<\/p>\n<p>SELECT &#8230; FROM A JOIN (B JOIN C ON &#8230;) ON &#8230; &#8211;\u00a0przekracza limit 1000 kolumn.<\/p>\n<p>Podczas gdy polecenie:<\/p>\n<p>SELECT &#8230; FROM A, B, C &#8211;\u00a0nie przekracza tego limitu.<\/p>\n<p><\/div><\/section>\n<p>W przypadku Oracle instrukcje SQL s\u0105 generowane przez system ERP w taki spos\u00f3b, \u017ce limit 1000 kolumn w klauzuli join jest osi\u0105gany znacznie rzadziej, a zatem znacznie rzadziej prowadzi do b\u0142\u0119d\u00f3w.<\/p>\n<p><strong>Maksymalnie 4000 bajt\u00f3w na atrybut<\/strong><\/p>\n<p>Atrybut mo\u017ce mie\u0107 maksymalny rozmiar 4000 bajt\u00f3w. Oznacza to, \u017ce ci\u0105gi znak\u00f3w mog\u0105 mie\u0107 maksymaln\u0105 d\u0142ugo\u015b\u0107 2000 znak\u00f3w.<\/p>\n<p><strong>Pusty ci\u0105g jest identyczny z NULL<\/strong><\/p>\n<p>W Oracle pusty ci\u0105g znak\u00f3w jest identyczny z NULL. R\u00f3\u017cni si\u0119 to od innych DBMS i prowadzi do innego zachowania zapyta\u0144 dla pustych ci\u0105g\u00f3w.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">T jest tabel\u0105 ze schematem i zawarto\u015bci\u0105:<\/p>\n<p>create table T(a varchar(10) primary key, b varchar(10));<\/p>\n<p>insert into T values (&#8217;1&#8242;,&#8217;a&#8217;);<\/p>\n<p>insert into T values (&#8217;2&#8242;,&#8221;);<\/p>\n<p>Zapytanie:<\/p>\n<p>select * from T where b=&#8221;;<\/p>\n<p>zwraca pusty zestaw wynik\u00f3w w Oracle. We wszystkich innych bazach danych zapytanie to zwraca wiersz: 2.<\/div><\/section>\n<p>Aby skorygowa\u0107 ten b\u0142\u0105d, pusty znak jest zapisywany zamiast pustego ci\u0105gu we wszystkich bazach danych. System ERP mapuje pusty ci\u0105g w spos\u00f3b przezroczysty na pusty znak, dzi\u0119ki czemu zmiana jest niezauwa\u017calna i nie mo\u017ce na ni\u0105 wp\u0142ywa\u0107.<\/p>\n<p>System ERP usuwa wszystkie do\u0142\u0105czone spacje (rtrim) w Business Objects. Nie jest zatem mo\u017cliwe zapisanie ci\u0105gu znak\u00f3w ze spacj\u0105 z poziomu aplikacji. Ta zamiana jest przeprowadzana we wszystkich bazach danych w celu osi\u0105gni\u0119cia identycznego zachowania we wszystkich bazach danych.<\/p>\n<p>Jednak to zast\u0105pienie staje si\u0119 zauwa\u017calne, je\u015bli na przyk\u0142ad u\u017cywany jest operator LIKE. Wyra\u017cenia takie jak LIKE <em>_<\/em> znajduj\u0105 r\u00f3wnie\u017c spacje, a zatem tak\u017ce wiersze, kt\u00f3re system ERP zapisa\u0142 jako pusty ci\u0105g.<\/p>\n<p>Je\u015bli pusty ci\u0105g jest u\u017cywany jako sta\u0142a w OQL, jest on zast\u0119powany pustym znakiem. Na przyk\u0142ad a=&#8221; jest zast\u0119powane przez a=&#8217; &#8217;, a LIKE &#8221; jest zast\u0119powane przez LIKE &#8217; &#8217;.<\/p>\n<p>Sterownik ODBC systemu ERP korzysta r\u00f3wnie\u017c z Persistence service systemu ERP. Poniewa\u017c zamiana odbywa si\u0119 w Persistence service<span style=\"color: #ff00ff;\">,<\/span> jest ona r\u00f3wnie przejrzysta dla sterownika ODBC, jak i dla aplikacji.<\/p>\n<p>Zamiana ta jest widoczna, gdy inne programy uzyskuj\u0105 dost\u0119p do bazy danych systemu ERP bezpo\u015brednio przez SQL. W przypadku takich dost\u0119p\u00f3w nale\u017cy uwzgl\u0119dni\u0107 obs\u0142ug\u0119 pustych ci\u0105g\u00f3w znak\u00f3w, a tak\u017ce mapowanie znacznik\u00f3w timestamps, tekst\u00f3w, guid\u00f3w, obiekt\u00f3w blob itp. Wszystkie te typy danych maj\u0105 cz\u0119\u015bciowo z\u0142o\u017con\u0105 reprezentacj\u0119 w bazie danych, kt\u00f3ra mo\u017ce by\u0107 \u0142atwo rozwi\u0105zana tylko przez system ERP.<\/p>\n<p><strong>Brak automatycznego RTRIM dla atrybut\u00f3w \u0142a\u0144cuchowych<\/strong><\/p>\n<p>W przeciwie\u0144stwie do innych system\u00f3w DBMS, ORACLE rozr\u00f3\u017cnia ci\u0105gi dla por\u00f3wna\u0144, kt\u00f3re r\u00f3\u017cni\u0105 si\u0119 tylko spacjami poni\u017cej. Nie jest to problematyczne, poniewa\u017c ko\u0144cowe spacje w atrybutach \u0142a\u0144cuch\u00f3w s\u0105 zawsze obcinane.<\/p>\n<h5 id=\"ograniczenia-nalozone-przez-serwer-sql\" ><span class=\"ez-toc-section\" id=\"Ograniczenia_nalozone_przez_serwer_SQL\"><\/span>Ograniczenia na\u0142o\u017cone przez serwer SQL<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><strong>Maksymalnie 8192 bajt\u00f3w na wiersz<\/strong><\/p>\n<p>Suma rozmiaru wszystkich kolumn w wierszu bez kolumn VARCHAR nie mo\u017ce przekroczy\u0107 8192 bajt\u00f3w. Je\u015bli wiersz z kolumnami VARCHAR jest wi\u0119kszy ni\u017c 8192 bajty, w\u00f3wczas wi\u0119cej ni\u017c jeden blok jest u\u017cywany do zapisania tego wiersza, a czasy dost\u0119pu do tabel s\u0105 skr\u00f3cone. Podczas generowania opisu tabeli sprawdzany jest ca\u0142kowity rozmiar kolumn i w razie potrzeby generowane jest ostrze\u017cenie lub komunikat o b\u0142\u0119dzie.<\/p>\n<h5 id=\"4-11-3-ograniczenia-wynikajace-z-db2-400\" ><span class=\"ez-toc-section\" id=\"4113_Ograniczenia_wynikajace_z_DB2400\"><\/span>4.11.3 Ograniczenia wynikaj\u0105ce z DB2\/400<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><strong>Transakcje nie s\u0105 ca\u0142kowicie odizolowane<\/strong><\/p>\n<p>W przypadku DB2 for the iSeries usuni\u0119cia i niekt\u00f3re zmiany s\u0105 widoczne dla wszystkich innych transakcji, nawet je\u015bli transakcja modyfikuj\u0105ca nie zosta\u0142a jeszcze zako\u0144czona zatwierdzeniem.<\/p>\n<p>W przeciwie\u0144stwie do innych baz danych, iSeries zapisuje wszystkie zmiany natychmiast do tabeli i zapisuje stary stan w dzienniku. Po wycofaniu iSeries przywraca dane przy u\u017cyciu dziennika. Je\u015bli rekordy danych s\u0105 zmieniane lub wstawiane, wymagana jest blokada dla tych rekord\u00f3w danych. Wszystkie wybory s\u0105 dokonywane w tabeli, kt\u00f3ra zosta\u0142a ju\u017c zmieniona i nie korzystaj\u0105 z dziennika.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Rekord danych ma pierwotnie warto\u015b\u0107 A i warto\u015b\u0107 ta zostaje zmieniona na B w ramach transakcji. \u017badna inna transakcja nie mo\u017ce nast\u0119pnie znale\u017a\u0107 rekordu danych z warto\u015bci\u0105 A. Je\u015bli wyszukiwany jest rekord danych z warto\u015bci\u0105 B, transakcja wyszukuj\u0105ca napotyka blokad\u0119 i musi poczeka\u0107 na zako\u0144czenie transakcji zmieniaj\u0105cej.<\/div><\/section>\n<p>W rezultacie serwer iSeries nigdy nie zwraca nieprawid\u0142owych danych do systemu ERP. Je\u015bli jednak transakcje zmiany s\u0105 otwarte, nie wszystkie dane zostan\u0105 znalezione. Z tego powodu wszystkie usuni\u0119cia s\u0105 przeprowadzane w systemie ERP tak p\u00f3\u017ano, jak to mo\u017cliwe. Szczeg\u00f3lnie krytyczne punkty s\u0105 wyra\u017anie zabezpieczone w aplikacjach za pomoc\u0105 blokad logicznych, dzi\u0119ki czemu zachowanie iSeries ponownie staje si\u0119 mniej krytyczne.<\/p>\n<p>\u015arodki te nie rozwi\u0105zuj\u0105 jednak problemu, a jedynie zmniejszaj\u0105 prawdopodobie\u0144stwo odczytu niesp\u00f3jnych danych. Oznacza to, \u017ce podczas produktywnego korzystania z systemu iSeries ryzyko niesp\u00f3jnego odczytu danych pozostaje niskie.<\/p>\n<h5 id=\"ograniczenia-wynikajace-z-postgresql\" ><span class=\"ez-toc-section\" id=\"Ograniczenia_wynikajace_z_PostgreSQL\"><\/span>Ograniczenia wynikaj\u0105ce z PostgreSQL<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><strong>Wszystkie identyfikatory SQL w cudzys\u0142owach<\/strong><\/p>\n<p>PostgreSQL konwertuje wszystkie identyfikatory SQL, takie jak nazwy tabel, nazwy kolumn i nazwy indeks\u00f3w, na ma\u0142e litery. Comarch ERP Enterprise u\u017cywa jednak du\u017cych liter dla identyfikator\u00f3w SQL. Z tego powodu wszystkie identyfikatory SQL musz\u0105 by\u0107 uj\u0119te w podw\u00f3jne cudzys\u0142owy.<\/p>\n<p><strong>Sta\u0142a d\u0142ugo\u015b\u0107 typu danych GUID<\/strong><\/p>\n<p>Typ danych GUID ma sta\u0142\u0105 d\u0142ugo\u015b\u0107 16 bajt\u00f3w w PostgreSQL. Oznacza to, \u017ce identyfikatory GUID o mniejszej d\u0142ugo\u015bci nie mog\u0105 by\u0107 przechowywane w PostgreSQL. Jednak identyfikatory GUID o d\u0142ugo\u015bci mniejszej ni\u017c 16 bajt\u00f3w s\u0105 nieprawid\u0142owe &#8211; niezale\u017cnie od PostgreSQL.<\/p>\n<p><strong>Nazwa bazy danych w \u015bcie\u017cce dost\u0119pu<\/strong><\/p>\n<p>Nazwa bazy danych musi by\u0107 okre\u015blona w \u015bcie\u017cce dost\u0119pu do bazy danych PostgreSQL:<\/p>\n<p>jdbc:postgresql:\/\/&lt;host&gt;:&lt;port&gt;\/&lt;dbName&gt;.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">jdbc:postgresql:\/\/pgsql.xyz.com:5432\/ABC12301<\/div><\/section>\n<h4 id=\"wielkie-male-litery\" ><span class=\"ez-toc-section\" id=\"Wielkiemale_litery\"><\/span>Wielkie\/ma\u0142e litery<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Mo\u017cna u\u017cy\u0107 w\u0142a\u015bciwo\u015bci systemu ERP <em>com.cisag.sys.kernel.caching.CaseSensi-tivityMode<\/em>, aby wp\u0142yn\u0105\u0107 na obs\u0142ug\u0119 du\u017cych\/ma\u0142ych liter.<\/p>\n<p>Mo\u017cliwe warto\u015bci to<\/p>\n<ul>\n<li>1 &#8211; du\u017ce\/ma\u0142e litery mog\u0105 by\u0107 wprowadzane i wyszukiwane we wszystkich polach tekstowych.<\/li>\n<li>2 &#8211; wielko\u015b\u0107 liter nie ma znaczenia przy wyszukiwaniu opis\u00f3w.<\/li>\n<li>3 &#8211; wielko\u015b\u0107 liter nie ma znaczenia przy wyszukiwaniu identyfikator\u00f3w i oznacze\u0144.<\/li>\n<li>4 (warto\u015b\u0107 domy\u015blna)- w polach identyfikacyjnych mo\u017cna wprowadza\u0107 tylko wielkie litery.<\/li>\n<\/ul>\n<p>W trybie rozr\u00f3\u017cniania wielko\u015bci liter 3 lub 4 wszystkie pola identyfikacyjne, z wyj\u0105tkiem wyj\u0105tk\u00f3w zarejestrowanych w klasie Java c<em>om.cisag.app.general.log.CaseSensitivityRegistry<\/em>, s\u0105 wyszukiwane wielkimi literami. Warunkiem wst\u0119pnym jest to, \u017ce zawarto\u015b\u0107 wszystkich p\u00f3l identyfikacyjnych w bazie danych jest ju\u017c zapisana wielkimi literami. Podczas wyszukiwania wszystkie wzorce wyszukiwania s\u0105 konwertowane na du\u017ce litery przed ich wykonaniem w bazie danych. Oznacza to, \u017ce baza danych nie musi ju\u017c zmienia\u0107 wielko\u015bci liter podczas wykonywania zapytania, dzi\u0119ki czemu baza mo\u017ce korzysta\u0107 z indeks\u00f3w p\u00f3l identyfikacyjnych podczas wykonywania zapyta\u0144.<\/p>\n<p>Je\u015bli nast\u0119pnie ustawiony zostanie tryb czu\u0142o\u015bci wielko\u015bci liter 3 lub 4 w systemie, mo\u017cliwe jest, \u017ce w polu identyfikacyjnym znajduj\u0105 si\u0119 rekordy danych z ma\u0142ymi literami. Te rekordy danych nie mog\u0105 zosta\u0107 odnalezione podczas wyszukiwania. Dlatego przed ustawieniem trybu czu\u0142o\u015bci wielko\u015bci liter 3 lub 4 upewnij si\u0119, \u017ce wszystkie pola identyfikacyjne we wszystkich tabelach zawieraj\u0105 tylko wielkie litery.<\/p>\n<p>Je\u015bli aktywny jest tryb czu\u0142o\u015bci na wielko\u015b\u0107 liter 3 lub 4, w polach identyfikacyjnych mo\u017cna wprowadza\u0107 tylko wielkie litery. W takim przypadku nie mo\u017cesz zapisywa\u0107 ma\u0142ych liter w polach identyfikacyjnych.<\/p>\n<p>W trybie czu\u0142o\u015bci na wielko\u015b\u0107 liter 2, 3 lub 4 wszystkie opisy, opr\u00f3cz wyj\u0105tk\u00f3w zarejestrowanych w klasie Java <em>com.cisag.app.general.log.CaseSensitivityRegistry<\/em>, s\u0105 wyszukiwane du\u017cymi\/ma\u0142ymi literami. W tym celu wzorzec wyszukiwania i pole bazy danych s\u0105 konwertowane na du\u017ce litery podczas wykonywania zapytania. Jest ma\u0142o prawdopodobne, aby baza danych mog\u0142a u\u017cy\u0107 indeksu do ograniczenia do p\u00f3l opisu podczas wykonywania zapytania wyszukiwania. Dlatego te\u017c, je\u015bli cz\u0119\u015b\u0107 pola opisu jest zawarta w indeksie, pole to nie jest wyszukiwane niezale\u017cnie od wielkich\/ma\u0142ych liter, aby baza danych mog\u0142a u\u017cy\u0107 indeksu do wyszukiwania.<\/p>\n<h4 id=\"ograniczenia-specyficzne-dla-jezyka\" ><span class=\"ez-toc-section\" id=\"Ograniczenia_specyficzne_dla_jezyka\"><\/span>Ograniczenia specyficzne dla j\u0119zyka<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Systemy DBMS dzia\u0142aj\u0105 z r\u00f3\u017cnymi algorytmami sortowania, z kt\u00f3rych ka\u017cdy dzia\u0142a z r\u00f3\u017cnymi tabelami sortowania. Oznacza to, \u017ce ka\u017cdy system DBMS sortuje ci\u0105gi znak\u00f3w inaczej dla ka\u017cdego j\u0119zyka. Aby mo\u017cna by\u0142o u\u017cy\u0107 sortowania bazy danych, nale\u017cy okre\u015bli\u0107, czy jest ono zgodne z systemem ERP.<\/p>\n<p>Sortowanie bazy danych jest zgodne z systemem ERP, je\u015bli ma unikaln\u0105 kolejno\u015b\u0107 znak\u00f3w Unicode do por\u00f3wnywania, grupowania i sortowania ci\u0105g\u00f3w znak\u00f3w. Sortowanie wybrane dla j\u0119zyka powinno sortowa\u0107 zgodnie z oczekiwaniami u\u017cytkownika tak dalece, jak to mo\u017cliwe.<\/p>\n<h5 id=\"oracle-sql-server-i-db2-400\" ><span class=\"ez-toc-section\" id=\"Oracle_SQL_Server_i_DB2400\"><\/span>Oracle, SQL Server i DB2\/400<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Poni\u017csza tabela zawiera list\u0119 zalecanych domy\u015blnych ustawie\u0144 bazy danych w odniesieniu do u\u017cywanego systemu DBMS i g\u0142\u00f3wnego j\u0119zyka skonfigurowanego dla bazy danych w systemie ERP.\u00a0 W przypadku baz danych DBMS DB2\/400 i Oracle ustawienia te s\u0105 wprowadzane automatycznie przez system ERP; baza danych MS SQL Server musi zosta\u0107 odpowiednio skonfigurowana podczas jej tworzenia.<\/p>\n<table style=\"width: 100%; height: 552px;\">\n<thead>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 69px;\" rowspan=\"2\" width=\"107\">J\u0119zyk<\/td>\n<td style=\"border-style: outset; height: 23px;\" colspan=\"3\" width=\"135\">DBMS<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">DB2\/400(LANGID, sortowanie tabeli)<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Serwer MS-SOL(Zestawienie)<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">Oracle(NLS_SORT)<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Niemiecki<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">DEU, QSYS\/QLA10111U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Latin1_General_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">NIEMIECKI<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Angielski<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">ENG, QSYS\/QLA1011DU<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Latin1_General_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">WEST_EUROPEAN<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">Francuski<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">FRA, QSYS\/QLA10129U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">French_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">FRANCUSKI<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">W\u0142oski<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">ITA, QSYS\/QLA10118U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Latin1_General_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">W\u0141OSKI<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Chorwacki<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">HRV, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Croatian_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">CHORWACJA<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Holenderski<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">NLD, QSYS\/QLA10025U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Latin1_General_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">HOLENDERSKI<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">Polski<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">PLK, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Polish_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">POLSKI<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Rosyjski<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">RUS, QSYS\/QRUS0401U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Cyrillic_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">ROSJA<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">S\u0142owacki<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">SKY, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Slovak_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">S\u0141OWAK<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">S\u0142owe\u0144ski<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">SLO, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Slovenian_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">S\u0141OWENIA<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">Czechy<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">CSY, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Czech_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">CZECHY<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\" width=\"107\">Turecki<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"135\">TRK, QSYS\/QTRK0402U<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"165\">Turkish_CS_AS<\/td>\n<td style=\"border-style: outset; height: 23px;\" width=\"132\">TURCJA<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">W\u0119gierski<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">HUN, QSYS\/QLA20366U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Hungarian_CS_AS<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">W\u0118GRY<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\" width=\"107\">Chi\u0144ski<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"135\">CHS, QSYS\/QBCHS04B0U<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"165\">Chinese_Simplified_Pinyin_100_BIN2<\/td>\n<td style=\"border-style: outset; height: 46px;\" width=\"132\">BINARY<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Odpowiednie zestawienia systemu ERP s\u0105 dostarczane wraz z no\u015bnikiem instalacyjnym dla wymienionych ustawie\u0144. S\u0105 one u\u017cywane do symulacji sortowania ci\u0105g\u00f3w znak\u00f3w w pami\u0119ci g\u0142\u00f3wnej, tak aby u\u017cytkownik zauwa\u017cy\u0142 jak najmniejsz\u0105 r\u00f3\u017cnic\u0119 mi\u0119dzy sortowaniami.<\/p>\n<h5 id=\"postgresql\" ><span class=\"ez-toc-section\" id=\"PostgreSQL\"><\/span>PostgreSQL<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>PostgreSQL nie rozpoznaje tabel sortowania dla specjalnych j\u0119zyk\u00f3w. Sortowanie jest oparte na u\u017cywanym systemie operacyjnym. Oznacza to, \u017ce sortowanie w bazie danych mo\u017ce by\u0107 r\u00f3\u017cne w r\u00f3\u017cnych wersjach systemu Windows i Linux. Comarch ERP Enterprise wykorzystuje standardowe sortowanie Java dla odpowiedniego j\u0119zyka podstawowego bazy danych na serwerze aplikacji. Mog\u0105 wyst\u0105pi\u0107 rozbie\u017cno\u015bci mi\u0119dzy sortowaniem bazy danych specyficznym dla systemu operacyjnego a sortowaniem na serwerze aplikacji. Im wi\u0119ksze rozbie\u017cno\u015bci, tym wi\u0119ksze prawdopodobie\u0144stwo wyst\u0105pienia niesp\u00f3jno\u015bci w Comarch ERP Enterprise, np. podczas przewijania w niestandardowych listach.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Nale\u017cy upewni\u0107 si\u0119, \u017ce sortowanie bazy danych i podstawowy j\u0119zyk bazy danych s\u0105 zgodne. Nale\u017cy wybra\u0107 sortowanie Unix dla bazy danych (np. <em>de_DE<\/em> dla j\u0119zyka niemieckiego) Sortowanie Unix jest podobne do sortowania Java. Nale\u017cy u\u017cywa\u0107 sortowania uwzgl\u0119dniaj\u0105cego wielko\u015b\u0107 liter i nigdy nie wolno u\u017cywa\u0107 sortowania niewra\u017cliwego na wielko\u015b\u0107 liter.<\/div><\/section>\n<h4 id=\"przelaczanie-awaryjne-bazy-danych\" ><span class=\"ez-toc-section\" id=\"Przelaczanie_awaryjne_bazy_danych\"><\/span>Prze\u0142\u0105czanie awaryjne bazy danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Wi\u0119kszo\u015b\u0107 system\u00f3w zarz\u0105dzania bazami danych (DBMS) posiada mechanizmy prze\u0142\u0105czania awaryjnego. Oznacza to, \u017ce kilka instancji bazy danych dzia\u0142a r\u00f3wnolegle w tej samej bazie danych lub w lustrzanej bazie danych. Je\u015bli instancja bazy danych nie jest ju\u017c dost\u0119pna z powodu b\u0142\u0119du, inna instancja bazy danych mo\u017ce przej\u0105\u0107 zadania uszkodzonej instancji. Cz\u0119sto istnieje kilka sposob\u00f3w konfiguracji prze\u0142\u0105czania awaryjnego dla systemu bazy danych w systemie DBMS. Konfiguracje obs\u0142ugiwane przez Comarch ERP Enterprise mo\u017cna znale\u017a\u0107 w dokumentacji instalacyjnej.<\/p>\n<h4 id=\"poziom-izolacji-transakcji\" ><span class=\"ez-toc-section\" id=\"Poziom_izolacji_transakcji\"><\/span>Poziom izolacji transakcji<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>System ERP wykorzystuje co najmniej poziom izolacji transakcji <em>READ_COMMITTED<\/em> dla wszystkich po\u0142\u0105cze\u0144 z baz\u0105 danych. Przy tym poziomie izolacji transakcji system bazy danych zwraca tylko dane, kt\u00f3re zosta\u0142y zapisane w bazie danych przez pomy\u015blnie zako\u0144czon\u0105 transakcj\u0119 (z zatwierdzeniem) w odpowiedzi na zapytanie. Dane z transakcji, kt\u00f3re nie zosta\u0142y jeszcze zako\u0144czone, nie s\u0105 widoczne w tych po\u0142\u0105czeniach.<\/p>\n<p>Interaktywne wyszukiwanie dialogowe zazwyczaj obejmuje stosunkowo z\u0142o\u017cone zapytania. Tylko niewielka cz\u0119\u015b\u0107 danych wynikowych zapytania jest u\u017cywana przez program. S\u0105 to zazwyczaj klucze podstawowe wybranego obiektu biznesowego. Wszystkie warto\u015bci pochodz\u0105ce z wyszukiwania dialogowego s\u0105 sprawdzane przez aplikacj\u0119, poniewa\u017c wynik wyszukiwania mo\u017ce by\u0107 zawsze nieaktualny, a zatem niesp\u00f3jny. Poniewa\u017c wszyscy u\u017cytkownicy wyszukiwania dialogowego musz\u0105 oczekiwa\u0107, \u017ce wynik b\u0119dzie nieaktualny i niesp\u00f3jny, <em>READ_COMMITTED<\/em> mo\u017cna pomin\u0105\u0107 w przypadku wyszukiwania interaktywnego.<\/p>\n<p>Z tego powodu system ERP u\u017cywa poziomu izolacji transakcji <em>READ_UNCOMMITTED<\/em> dla iSeries i serwera MS SQL. Z\u0142o\u017cone zapytania mog\u0105 by\u0107 przetwarzane szybciej w tych systemach DBMS z poziomem izolacji transakcji <em>READ_UNCOMMITTED<\/em> ni\u017c z poziomem izolacji transakcji <em>READ_COMMITTED<\/em>.<\/p>\n","protected":false},"author":27,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-11780","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-bazy-danych"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/11780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/comments?post=11780"}],"version-history":[{"count":43,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/11780\/revisions"}],"predecessor-version":[{"id":20606,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/11780\/revisions\/20606"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/media?parent=11780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}