እንደ ማሟያ
የንድፈ ሃሳቡ ክፍል በሰነድ ውስጥ በደንብ ተገልጿል
በአንቀጹ ውስጥ ምንም አዲስ ነገር የለም, ምንም የተደበቀ ትርጉም ወይም ሚስጥራዊ እውቀት የለም. የንድፈ ሃሳቡን ተግባራዊ አተገባበር በተመለከተ አንድ ንድፍ ብቻ። ፍላጎት ያለው ካለ ያንብቡት። ፍላጎት ከሌለህ ጊዜህን አታጥፋ።
የችግሩ ቀመር
በርዕሰ ጉዳዩ ላይ በጥልቀት ሳንጠልቅ፣ በአጭሩ፣ ችግሩ በሚከተለው መልኩ ሊቀረጽ ይችላል። አንድ የተወሰነ የንግድ አካል የሚተገበር ሠንጠረዥ አለ. በሠንጠረዡ ውስጥ ያሉት ረድፎች ሊሰረዙ ይችላሉ, ነገር ግን ረድፎች በአካል ሊሰረዙ አይችሉም, እነሱ መደበቅ አለባቸው.
“ምንም ነገር አትሰርዝ፣ እንደገና ስሙት። በይነመረብ ሁሉንም ነገር ያከማቻል"
በመንገድ ላይ, ከዚህ አካል ጋር አብረው የሚሰሩትን የተከማቹ ተግባራትን እንደገና ላለመጻፍ ይመከራል.
ይህንን ጽንሰ-ሐሳብ ለመተግበር ሠንጠረዡ ባህሪው አለው ተሰርዟል።. ከዚያ ሁሉም ነገር ቀላል ነው - ደንበኛው በባህሪው ውስጥ ያሉትን መስመሮች ብቻ ማየት እንደሚችል ማረጋገጥ አለብዎት ተሰርዟል። የውሸት ምን ዓይነት ዘዴ ጥቅም ላይ ይውላል? የረድፍ ደረጃ ደህንነት.
ትግበራ
የተለየ ሚና እና እቅድ ይፍጠሩ
CREATE ROLE repos;
CREATE SCHEMA repos;
የታለመውን ሰንጠረዥ ይፍጠሩ
CREATE TABLE repos.file
(
...
is_del BOOLEAN DEFAULT FALSE
);
CREATE SCHEMA repos
እኛ እንጨምራለን የረድፍ ደረጃ ደህንነት
ALTER TABLE repos.file ENABLE ROW LEVEL SECURITY ;
CREATE POLICY file_invisible_deleted ON repos.file FOR ALL TO dba_role USING ( NOT is_deleted );
GRANT ALL ON TABLE repos.file to dba_role ;
GRANT USAGE ON SCHEMA repos TO dba_role ;
የአገልግሎት ተግባር - በሰንጠረዡ ውስጥ አንድ ረድፍ መሰረዝ
CREATE OR REPLACE repos.delete( curr_id repos.file.id%TYPE)
RETURNS integer AS $$
BEGIN
...
UPDATE repos.file
SET is_del = TRUE
WHERE id = curr_id ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
የንግድ ተግባር - ሰነድ መሰረዝ
CREATE OR REPLACE business_functions.deleteDoc( doc_for_delete JSON )
RETURNS JSON AS $$
BEGIN
...
PERFORM repos.delete( doc_id ) ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
ውጤቶች
ደንበኛው ሰነዱን ይሰርዛል
SELECT business_functions.delCFile( (SELECT json_build_object( 'CId', 3 )) );
ከተሰረዘ በኋላ ደንበኛው ሰነዱን አያየውም
SELECT business_functions.getCFile"( (SELECT json_build_object( 'CId', 3 )) ) ;
-----------------
(0 rows)
ነገር ግን በመረጃ ቋቱ ውስጥ ሰነዱ አልተሰረዘም, ባህሪው ብቻ ተቀይሯል ኢስ_ዴል
psql -d my_db
SELECT id, name , is_del FROM repos.file ;
id | name | is_del
--+---------+------------
1 | test_1 | t
(1 row)
በችግር መግለጫው ውስጥ የሚፈለገው የትኛው ነው.
ውጤቱ
ርዕሱ አስደሳች ከሆነ በሚቀጥለው ጥናት የረድፍ ደረጃ ደህንነትን በመጠቀም የመረጃ ተደራሽነትን ለመለየት ሚና ላይ የተመሠረተ ሞዴልን የመተግበር ምሳሌ ማሳየት ይችላሉ።
ምንጭ: hab.com